本文将为您介绍DB2 V8 中引入的MDC表,在MDC表中,块映射(block map)会跟踪属于这个表的所有扩展数据块,并且指示哪些块或扩展数据块上包含数据以及哪些块或扩展数据块上没有包含数据
MDC 是在 DB2 V8 中引入的,通过它可以在物理上将在多个维上具有类似值的行聚集在一起放在磁盘上。这种聚集能为常见分析性查询提供高效的 I/O。例如对于 Product=car,Region=East,并且 SaleMonthYear = Jan09 的所有行,可以将它们存储在相同的存储位置,即所谓的块(block)。一个块的大小等于表空间的扩展数据块(extent)大小,扩展数据块是磁盘上的一组连续页,所以将这些具有类似值的行在物理上是存放在连续的数据页上。了解 MDC 相关内容和细节,可以查看 DB2 9.7 信息中心的“多维集群表”。
在 MDC 表中,块映射(block map)会跟踪属于这个表的所有扩展数据块,并且指示哪些块或扩展数据块上包含数据以及哪些块或扩展数据块上没有包含数据。包含数据的块标记为“正在使用”(“IN USE”)。每当发生删除或转出时,相应的块条目不再标记为“正在使用”,而是被释放以供 MDC 表复用。但是表空间中的其他对象无法使用这些扩展数据块。
可以通过重组 MDC 表来从 MDC 表释放这些可用数据扩展数据块。在 DB2 9.7 之前只能在完全脱机的情况进行重组,在 DB2 9.7 中开始支持联机对 MDC 进行重组以释放扩展数据块。DB2 9.7 中的 REORG TABLE 命令增加了 RECLAIM EXTENTS ONLY 选项,可以使用这个选项来释放 MDC 表专用的扩展数据块,并且使该空间可供表空间内其他数据库对象使用。该选项还允许控制在释放扩展数据块期间对 MDC 表的并行访问,写访问权限为缺省访问权限,还可选择读访问权限和无访问权限来控制并行访问。
除了使用 REORG TABLE 命令来释放扩展数据块,也可以使用 db2Reorg API 来回收扩展数据块。
另外,从 MDC 表释放扩展数据块只支持在 DMS 表空间。