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

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

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: MDC 提供的功能方便了数据的转入和转出,索引条目指向一个块而不是一行,DB2 最佳实践: 物理数据库设计最佳实践,第 2 部分:MDC、数据库分区、视图以及后设计工具介绍(5),块索引又比典型的(rowID)RID 索引要小很多,因此,虽然如此,在对使用了集群索引的集群表提供显著的性能好处的同

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 和非集群表相比第一个开销是:

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

Tags:DB 最佳 实践

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