本文中将介绍如何利用自动维护策略自动回收多维集群(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 来存储的。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
DBA该如何在DB2中找出未使用索引、表和包
在SYSCAT.TABLES,SYSCAT.INDEXES和SYSCAT.PACKAGES表中都已经增加了一列LASTUSED,因此从DB2 9.7开始,你可以轻松查询出未使用的索引,表和包。
-
批量拆分XML文档示例
DB2 9.7版引入了一个新的存储过程叫做“XDB_DECOMP_XML_FROM_QUERY”。它利用带有Annotations标记的schema来分解一个或者多个XML文档。
-
DB2 9.7 中的 SQL 兼容性
在本文中,我将通过示例演示 DB2 9.7 中新的 SQL 兼容特性。首先讨论触发器和新的数据类型,然后谈谈对 Oracle SQL 和 PL/SQL 的支持,最后讨论对象和并发改进。