WEB开发网
开发学院数据库DB2 DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分... 阅读

DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分:MDC、数据库分区、视图以及后设计工具介绍

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 因为集群是自动维护的,所以对 MDC 表来说不需要重组操作来重新集群数据,DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分:MDC、数据库分区、视图以及后设计工具介绍(3),然而,重组仍然被用来释放空间,新数据库只有个在前面的数据块被填满(或快满)后被创建,如果行被删除,例如,如果单元有

因为集群是自动维护的,所以对 MDC 表来说不需要重组操作来重新集群数据。然而,重组仍然被用来释放空间。例如,如果单元有很多分散的块,数据很少能够匹配到,或者,如果表有很多指针溢出,这个表的重组操作将压缩属于逻辑单元的记录到最少的块中,用时也删除指针溢出对。

使用 MDC 的益处

MDC 的意义非常深远。在某些情况下它能将复杂查询的性能提高 10 倍以上,同时你还可以用它转入和转出数据。还有下面显示的其他好处:

MDCs 是多维的。例如,数据可以根据 DATE 和 LOCATION 维度完美集群;单元和范围在新数据插入的时候会被自动创建。

MDCs 能和普通基于 RID 的索引、范围分区和 MQTs 联合使用。

MDCs 和内部查询并行性、DPF(不共享)并行性、LOAD、BACKUP 和 REORG 操作同时使用。

MDC 维度,和范围分区表不同,它是动态的;它会在表中自动创建新的单元,因为新单元是表示通过 SQL 操作(包括 JDBC、CLI,等等)或通过使用工具操作(比如 LOAD 和 IMPORT)插入的新的唯一数据。

MDCs 维护集群,而且正因为这样就不需要 REORGs 来维护集群命中率了。

下面的例子显示了如何定义一个 MDC 表:

CREATE TABLE T1 (c1 DATE, c2 INT, c3 INT, c4 DOUBLE, 
c5 INT generated always as (INT(C1)/100) ) 
ORGANIZE BY DIMENSIONS (c5, c3) 

ORGANIZE By 子句定义了集群的维度。这个表同时在 C5 和 C3 上被集群。 C1 是 coarsified C5,它包含很少的不同值(天减少为月)。

注意:由 coarsified 产生的 columns(s) 被使用在 MDC 块索引中,以提高单元级别的数据清除。

MDC 设计的一个关键是谨慎选择集群的维度。如果你选择的集群维度产生太多的单元,存储的成本会显著的增加。知道其中的原因非常重要。在一个 MDC 表中,每个单元都会根据需要的存储块来分配。存储块是设计为和表所在表空间的扩展数据块的大小相等。如果一个单元没有数据,那么存储块的数据是 0 。然而,在一个单元中存储了若干记录的典型表中会造成给单元分配一个或多个存储块。对每个有数据的单元都会有一批通常只包含了被部分填充数据块。因此,在每个单元(不是数据块)中造成浪费和存储块的大小成比例。新数据库只有个在前面的数据块被填满(或快满)后被创建。如果行被删除,数据库管理器会尝试尽可能多的重用空间。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB 最佳 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接