DB2分区特性与Oracle的比较
DB2和Oracle所支持的分区特性既有相似之处,也有一定区别。除了Oracle不支持的MDC以外,其他功能类似,只是语法上有所区别。具体对比如下表:
Oracle分区 | DB2分区 | Oracle 10g语法 | DB2 V9语法 |
区间分区 (Range Partitioning) | 表分区 (Table Partitioning) | PARTITION BY RANGE | PARTITION BY RANGE |
哈希分区 (Hash Partitioning) | 数据库分区 (Database Partitioning) | PARTITION BY HASH | DISTRIBUTE BY HASH |
列表分区 (List Partitioning) | 带生成列表分区 (Table Partitioning With Generated Column) | PARTITION BY LIST | PARTITION BY RANGE |
不支持 | 多维集群 (Multidimensional clustering) | 无 | ORGANIZE BY DIMENSION |
▲DB2分区特性与Oracle的比较
以数据库分区为例,DB2的数据库分区特性采用Share-nothing架构,这种架构允许多个数据库分区在一起并行工作来处理工作负载。在Oracle中,使用Share-disk架构。那么这两种架构有何区别呢?Share-nothing是指每个CPU都有私有内存区域和私有磁盘空间,而且两个CPU不能访问相同磁盘空间,CPU之间的通讯通过网络连接。而Share-disk是每个CPU使用自己的私有内存区域,通过内部通讯机制直接访问所有磁盘系统。这是DB2可以增加物理的partition来给数据库扩容的原因,也是DB2与Oracle分区的最大区别。
▲Share-nothing与Share-disk架构的对比
如下所示,是DB2中创建数据库分区表partition_table的语句,其中选择partition_date字段作为分区键:
(partition_date date NOT NULL,
partition_data VARCHAR(20) NOT NULL
)
IN tbsp_parts
DISTRIBUTE BY HASH (partition_date);
Oracle也支持数据库分区特性,语法不同也略有。如下所示,使用PARTITION BY HASH来建立数据库分区:
(
hash_part date,
hash_data varchar2(20)
)
PARTITION BY HASH(hash_part)
(partition p1 tablespace tbsp1,
partition p2 tablespace tbsp2
);
该语句表示创建了hash_table表,此表按照hash_part字段进行哈希分区,每个分区以循环的方式放置在表空间tbsp1和tbsp2中。
总结
本文介绍了IBM DB2数据库的分区特性:数据库分区(DPF)、多维聚类(MDC)和表分区(Table Partition),及其内部的区别与联系,以及DB2分区特性与Oracle等价功能之间的对比。相信通过本文读者能够对DB2分区特性有更深入的认识。如果想了解更多有关DB2特性的解析,请关注《探秘:为何越来越多SAP用户选择DB2?》。