DB2 DPF及其他分区特性的比较
IBM DB2的分区特性包括表分区(Table Partition)、多维聚类(MDC)和数据库分区特性(DPF)。具体对比如下表:
CREATE TABLE 语句中的子句 | DB2 特性名称 |
DISTRIBUTE BY HASH | DPF —— 数据库分区特性 |
ORGANIZE BY DIMENSION | MDC —— 多维聚类 |
PARTITION BY RANGE | TP —— 表分区 |
▲DB2表设计特性——CREATE table 语句对比
DB2 特性名称 | 一部分的名称 | 用于分区数据的列 | 其他术语 |
数据分区特性(Data Partitioning Feature,DPF) | 数据库分区 | 分布键(distribution key) | 在之前的版本中,分布键被称作分区键 |
多维聚类(Multidimensional Clustering,MDC) | 单元格,由一些块组成 | 维 | 块索引 |
表分区(TP) | 数据分区 | 表分区键 |
▲DB2表设计特性——相关术语
特性 | 特性如何组织数据 | 优点 |
DPF | 将行均匀地分布在多个数据库分区上 | 可伸缩性 —— 随着数据库的增长增加计算资源(也就是数据库分区) |
MDC | 将在多维上具有近似值的行放在表中相同的物理位置,即所谓的块 | 查询性能 —— 组织数据的方式有利于获得更快的检索速度,对于由多个谓词指定范围的查询尤其有效 |
TP | 将所有行放在同一个数据分区的一个指定范围的维中 | 数据移动 —— 通过添加和删除整个数据分区,可以增加和删除大量数据 |
▲DB2表设计特性——简要对比
特性 | 适合的表特征 | 事实表的特征 |
DPF | 大型表 —— 大到无法仅依靠单独一组 CPU 和 I/O 通道来处理 | 事实表是最大的数据库表。它们常常包含数亿行数据,有时候甚至包含数千亿行数据 |
MDC | 结果集返回在多个维上具有近似值的行的查询 | 事实表(以及通常所说的数据仓库)是为支持这种类型的查询而设计的 |
TP | 这种类型的表:周期性地添加大量数据,然后在数据到期后又删除大量数据 | 在事实表中,常常是每天都添加新数据。通常每月或每个季度删除过时的数据 |
▲DB2表设计特性——事实表特征
分区特性设计决定 | 经验法则 |
DPF —— 用作分布键的列 | 首选是具有很多不同值的列 |
MDC —— 用作 MDC 维的列 | 一种典型的设计是选择一个表示日期的列,再加上 0 到 3 个其他列,例如 region 和 product_type |
TP —— 用作表分区键的列和分区的数量 | 选择一个基于时间的列。定义与每次转出的数据量相符的分区 |
▲DB2表设计特性——经验法则总结
DPF 是最老的特性,通过它可以将数据库分成多个数据库分区。每个数据库分区有它自己的一组计算资源,包括CPU和存储。MDC是在DB2 Version 8中引入的,通过它可以在物理上将在多维上具有类似值的行聚合在一起放在磁盘上。这种聚合能为常见分析性查询提供高效的I/O,提高检索数据的效率。TP是在DB2 9中引入的,与MDC类似,它也可以将具有近似值的行存储在一起。TP 不同于其他特性的优势在于为表添加或删除大量数据这个方面,即转入和转出。
数据库分区、表分区和MDC能同时应用在一个设计中。要部署大型应用程序,最好在同一个数据库设计中实现数据库分区、表分区和MDC,以满足应用的多样化需求。可以应用数据库分区获得扩展性,并确保在逻辑分区之间均匀分布数据;表分区可以方便查询分区消除和数据转出;MDC可以用来提高查询性能和方便转入数据。