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

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

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 查询:select*fromsaleswheresales_date>”2006/03/03”anddate<“2007/01/01”..编译器会生成附加的谓词:month>=200603andmonth<=200701为了

查询:

select * from sales 
where sales_date> ” 2006/03/03 ” and date< “ 2007/01/01 ” ..

编译器会生成附加的谓词:

month>=200603 and month<=200701

为了减少空间浪费,可以指定一个更小的表空间扩展数据块,这会减少你的 MDC 块大小。

不要选择太多的维度。很少有设计能在 MDC 有 3 个以上的维度却不产生过多的存储需求。

你拥有的维度越多,单元基数就会以指数级相应的增长。这使得控制表膨胀率 10% 的设计目标变得几乎不可能实现。如果表过度膨胀(例如超过两倍大小)不仅需要更多的存储,同时也会因为部分填充块的 I/O 增加而使集群失去优势。

一个简单的例子:考虑一个有三个维度适合集群的表,每个有 10,000 唯一值。如果这些列彼此之间没有相互关联,那么对所有三个维度的集群就没有 coarsification,这会产生 10,000 x 10,000 x 10,000 个单元,每个单元有一个部分填充块。如果每块是 1MB,那么这个设计上的疏忽产生的代价就将是 500,000TB !

考虑只有一个维度的 MDC 。和传统单维度集群索引相比,单个维度的 MDC 仍然有相当多的优点。有如下理由:

集群是有保证的。

MDC 表中的索引是用block创建的,而非row。这种索引大小只有传统基于行的索引的 1/1000 。

用 MDC 转出数据,提高了 DELETE 性能。 DB2 9.5 中在 MDC 上的 RID 索引更新是异步的。

MDC 可以很方便的转入数据。

使用单维 MDC(如果需要可以 coarsification)强制进行集群来替代集群索引。集群索引需要付出很大的努力(不能保证集群质量)来集群数据,而且随着时间的推移,数据将变得不再集群。与之相比,MDC 保证了数据集群性,避免了重组数据的需求(见上面“ MDC Scenario ”章节中的 coarsification)。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB 最佳 实践

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