DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分:MDC、数据库分区、视图以及后设计工具介绍
2009-11-12 00:00:00 来源:WEB开发网在一个非集群表上的 INSERT 操作,不需要通过索引访问来判断记录被存放在磁盘的什么位置。相比之下在 MDC 表上,在选择哪个块中有空间存放插入的记录之前,需要通过访问 MDC 复合块索引来判断记录属于哪个单元。
如果 MDC 表包括一个产生的列来 coarsify 其中的一个维度,每个 INSERT 将引起很少的处理开销来为这一列计算生成值 , 就像 DB2 中的所有生成列一样被物化,也就是被计算出来然后填充在记录中。
然而,当和使用集群索引而集群起来的表相比较的话,MDC 有着显著的性能优势:
与一个集群索引相比,索引维护可以显著的减少 INSERTs,因为 DB2 数据库管理器仅只有在第一个键值添加到块中时的时候才更新块索引——不像一个 RID 索引,每一行插入表中都需要对索引进行更新。也就是说,如果每块有 1000 条记录,索引更新率就是 RID 索引更新率的 1/1000 。
索引更新也非常廉价,因为索引更小而且因此所以在树中有更少的层。在 B+ 树中有更少的层次,则意味着需要更少的处理来为索引插入判断目标的叶子节点。
无论使用集群索引还是用 MDC 来进行索引,在这两种情况下 DB2 数据库管理器都将在 INSERT 到目标记录的位置时访问索引(块索引的集群索引),并在 INSERT 过程中判断记录的目标位置。再强调一下这个索引非常小,而且树的高度通常很短,因此搜索速度非常快。
判断什么时候使用 MDC,什么时候使用集群索引
MDC 的价值要比集群索引高很多,因为它可以自动保证集群。根据 coarsification 的需求,MDC 的集群率通常可以达到 93%-100% 之间的某个值。相比之下,集群索引虽然可以在一开始就接近 100%,但是随着时间的推移却会变得不集群,因而需要花费时间来对数据重新集群。一般情况下,使用 MDC 在你的数据库上创建和维护数据集群,除非:
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››最佳ASP.NET编程习惯
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接