本文中将介绍如何利用自动维护策略自动回收多维集群(MDC)表中的空间。从 DB2 9.7 开始,不再需要完全脱机表重组就可以回收 MDC 的扩展数据块,对用户更有帮助的一个改进是,可以配置自动维护策略文件以自动完成回收过程,将用户从定期手动执行的重复劳动中释放出来。 MDC 以及空间回收简介 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 表空间。
DB2 V9 中引入了自动维护功能,即自动数据库备份、自动统计信息更新以及在必要时重组表和索引,基于这些新的特性,将大大简化我们在实际维护数据库过程中的工作量。 在 DB2 9.7 中,自动维护功能可用于释放扩展数据块部分。为了启用重组以释放 MDC 表中的扩展数据块,AUTO_MAINT、AUTO_TBL_MAINT 和 AUTO_REORG 数据库配置参数必须全部设置为“ON”。可通过使用“配置自动维护”向导或命令行来进行这些数据库配置参数的配置。在启用了数据库分区功能的 DB2 实例上,必须在目录分区上发出对这些参数的配置。 维护策略可以控制何时执行 MDC 表的自动重组以释放未使用的扩展数据块。DB2 的系统存储过程 AUTOMAINT_SET_POLICY 和 AUTOMAINT_SET_POLICYFILE 用来设置此维护策略,这里的策略都是用 XML 来存储的。
(责任编辑:admin) |