ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2(2)
传统的复合分区包括范围 - 列表分区和范围 - 散列分区,范围 - 列表分区是范围和列表技术的组合,其实质是首先对表数据按照范围进行分区,然后再利用列表对每个范围再次分区。每个子分区的内容表示数据的逻辑子集。范围 - 散列分区是范围和散列技术的组合,其实质就是首先对表进行区间分区,然后再把数据散列的分别在几个表空间中。
Oralce11G 中又增加了 RANGE-RANGE、LIST-RANG、LIST-HASH 和 LIST-LIST,但是在本文中没有考虑这 4 中复合分区。
DB2 分区介绍
在 DB2 中,分区可以从以下几个方面来说:
- 数据库分区
即数据库分区特性(DPF),如图 2 所示。
- 表分区
在 db2 的表分区又可以称为数据分区或者区间分区。这种数据组织模式与 oracle 类似,就是把数据分散存储于不同的存储对象中,这种存储对象是按照 1 个或多个表列得值来进行划分的数据分区或者数据范围。每个数据分区被存储在不同的表空间中。
- MDC
多维数据集即 MDC 是在 DB2 V8 时引入的,它把类似的数据按照多维聚集在一块存放在磁盘上,这样数据在读取是就可以整块的读取从而提高了 I/O 的效率。例如对于 Product=car,Region=East 的所有行,可以按照这两个字段作为维,把这两个字段相同的数据存储在相同的位置,即所谓的块(block),一个块的大小等于表空间的扩展数据块(extent)大小,扩展数据块是磁盘上的一组连续页,所以将这些具有类似值的行在物理上是存放在连续的数据页上。了解 MDC 相关内容和细节,可以查看 DB2 9.7 信息中心的“多维集群表”。
图 2.DB2 DPF 架构
Oracle 分区与 DB2 分区的对比
- Oracle 的区间分区
Oracle 的区间分区(Range partition)与 DB2 的表分区(table partition)在概念上极为匹配,只是在表分区的定义上有所区别。因此 Oracle 中的区间分区与 DB2 的表分区对映,在做数据的迁移的时候可以直接把 Oracle 中的区间分区迁移到 DB2 的表分区。Oracle 中区间分区示例如清单 1 所示:
清单 1. Oracle 中的区间分区示例
p class="codesection">CREATE TABLE sales ( year int, month int ) PARTITION BY RANGE (year, month) (PARTITION p1 VALUES LESS THAN (2002,4) tablespace tbsp1, PARTITION p2 VALUES LESS THAN (2002,7) tablespace tbsp2, PARTITION p3 VALUES LESS THAN (2002,10) tablespace tbsp3, PARTITION p4 VALUES LESS THAN (2002,13) tablespace tbsp4, PARTITION p5 VALUES LESS THAN (2003,4) tablespace tbsp5, PARTITION p6 VALUES LESS THAN (2003,7) tablespace tbsp6, PARTITION p7 VALUES LESS THAN (2003,10) tablespace tbsp7, PARTITION p8 VALUES LESS THAN (MAXVALUE, MAXVALUE) tablespace tbsp8 );
其对应的 db2 中的表分区定义:
清单 2. DB2 中的表分区示例
p class="codesection">CREATE TABLE sales ( year INT, month INT ) PARTITION BY RANGE (year, month) (STARTING FROM (2001, 1) ENDING (2001,3) IN tbsp1, ENDING (2001,6) IN tbsp2, ENDING (2001,9) IN tbsp3, ENDING (2001,12) IN tbsp4, ENDING (2002,3) IN tbsp5, ENDING (2002,6) IN tbsp6, ENDING (2002,9) IN tbsp7, ENDING AT MAXVALUE );
相关新闻>>
- 发表评论
-
- 最新评论 更多>>