DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分:MDC、数据库分区、视图以及后设计工具介绍
2009-11-12 00:00:00 来源:WEB开发网MDC 提供的功能方便了数据的转入和转出。索引条目指向一个块而不是一行,块索引又比典型的(rowID)RID 索引要小很多。因此,当 MDC 在转入处理时只有很少的块索引 I/O,这是因为块索引只在块被写满的时候被更新一次(而不是每一行插入)。由于 MDC 重用已经存在的空块不需要分页,所以插入也很快。插入时加的锁也少了,因为他们发生在一个块级别而不是行级别。表在转入和转出后不需要 REORG 数据。
MDC 存储场景
想要为一个传统事实表基于 Date、Product Name 和 Region 创建一个 MDC 。这里有一些在创建 MDC 时需要考虑的变量:
一年有 365 天。
XYZ 公司有 100,000 个产品。
XYZ 公司有 10 个区域。
开始创建 MDC
如果 MDC 直接创建在 Date, Product 和 Region 列上,每天将会产生 1,000,000 个新的单元(1 x 100,000 x 10),而每年则会产生 365,000,000 个单元。
如果区域中事务非常少,这将会有很多分散甚至是空的页面。这会导致大量没有必要的空间分配数量巨大的单元(页面)用来容纳块数据。这非常不好。
开始 MDC 的创建
使用函数来 coarsify 和限制 MDC 的基数,例如:
如果你在 Date 上使用月份函数,那么每年你会有 12 条记录。
如果你截取 Production Name 来挑出产品名称的第一个字母,你就会有 26 条可能的结果。
保留 Region 的 10 个结果。
使用这个场景中的建议,MDC 将会每年产生 12*26*10 = 3210 个单元或每天 8-9 个单元。这会消除很多页面没有数据的情况,并对 MDC 提供合理的基数来获得性能的好处。
MDC 运行时的开销 / 收益
MDC 是设计来为查询和许多删除场景提供极大性能好处。虽然如此,在对使用了集群索引的集群表提供显著的性能好处的同时,MDC 表这么做所带来的开销还是超过了非集群表。 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 数据模型
更多精彩
赞助商链接