ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2
数据库 Partitioning 概述
当数据库表中的数据不断增大,必然会导致数据的查询速度降低,从而应用程序的性能就会下降,这时就应该考虑对表进行分区,数据放在不同的分区这样在进行数据读取时就可以并行处理,从很大程度上提高数据的访问速度。还需要说明的是,表进行分区后,逻辑上表还是完整的,而只是把表中的数据在物理上存放到不同的表空间中(物理文件上),从而进行数据查询时,就不至于每次都扫描整张表。
总体来说,partition 可以从很大程度上改善数据库的性能,并且对数据的分区管理还可以改善管理员管理数据的灵活性以及可用性,如某个分区出现故障,其它分区的数据仍可用,同时管理员只需修复该分区即可。同时可以把不同的分区映射到磁盘从而均衡 IO。
Oracle 与 DB2 的 partitioning
图 1. 不同共享模式架构
无论是 oracle 还是 db2,为了提高数据的读写性能,在系统架构方面都采取了并行的方式,对于并行模式又可以分为以下几种:
- Share everything
这是最简单的一种方式,即在同一台机器上多个进程并行执行,处理器在处理过程中共享内存缓冲池、共享物理存储。这种方式受制于机器的物理资源。
- Share disk
在这种架构下,所有的机器共享一个物理存储;由于每台物理机器都独立于数据库中数据,这就能够最大限度的保证了机器数量的自由行。同样,由于每台机器都会扫描磁盘上的所有表,也就导致总体性能受制于大型系统。
- Share memory
即所有机器共享内存。
- Share nothing
数据分布在所有的机器上,每台机器有各自的存储。正因为如此,当增减机器的时候也会给整个系统带来影响;同时,因为每台机器只能访问各自的物理存储,这也就保证了系统性能可以近乎线性的提高。
Oracle 分区介绍
Oracle 采用的是 share-disk 架构,因此 oracle 的分区特性只是在同一磁盘上,这就决定了它不存在 DPF 的特性,只存在表分区。下面主要介绍一下 oracle 的几种主要的表分区。
- Range partition(区间分区)
Range partition 是比较常见的一种分区方式,它把数据基于分区键划定的范围映射到分区内。分区键即表中的某一列,而日期是经常被采用的分区键。Range partition 具有如下性质:
- 通过 values less than 子句指定上限值,大于或等于该值得数据都被分配到下一个分区。当然分区的下限值即为上一个分区的上限值。
- 在最高分区中定义 MAXVALUE。它代表了高于其它所有分区的值,包括控制。
- list partition(列表分区)
List partition 能够明确指定用列中的哪些具体的值来进行分区,这样的分区方式是 Range 和 Hash 所做不到的,这种方式的有点就是:用户可以组织和分组哪些没有顺序和没有关系的数据集合,用户可以明确的控制多少行被分区。
- hash partition(散列分区)
Hash Partitioning 映射数据到基于 HASH 算法的分区上,HASH 算法将应用你指定的分区关键字,平均的分那些在 Partitions 中的行。给每 一个分区近似相同的大小,要保证数据能平均分配,分区数一般是 2N。比如说,需要 insert sales_hash 一条数据,ORACLE 会通过 HASH 算法处理 salesman_id,然后找到对于的分区表进行 insert。Hash Partitioning 是为跨越设备的分布式数据提供了一种理想的方法,HASH 算法也很容易转化成 RANGE 分区方法,特别是当被分区的数据不是历史数据时。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>