DB2 10.5 for Linux, UNIX, and Windows

选择重组表的方法

以下是用于进行表重组的四种方法:传统重组(脱机)、使用 FULL 选项(以重新群集或回收空间)的原位重组(联机)、使用 CLEANUP OVERFLOWS 选项(以仅清除溢出)的原位重组(联机)以及使用 RECLAIM EXTENTS 选项的重组(联机)。

脱机(或传统)重组是缺省行为。要指定联机 reorg 操作,请使用 REORG 命令的 INPLACE with FULL、INPLACE with CLEANUP OVERFLOWS 或 RECLAIM EXTENTS 表子句。

每种方法都有其优点和缺点,下面各节对其进行了概述。选择重组方法时,请考虑哪种方法提供了您优先考虑的优点。例如,如果要最大程度地缩短受影响对象不可用的时段,那么可首选联机重组。如果优先考虑 reorg 操作所需的时段,那么脱机重组将是首选方法。

传统重组的优点

此方法具有下列优点:
  • 最快速的表 reorg 操作,当未包括大对象 (LOB) 或长字段数据时尤其如此。
  • 完成后生成以最佳方式集群的表和索引。
  • 在重组表之后会自动重建索引;不需要执行单独的步骤来重建索引。
  • 使用临时表空间来构建影子副本。使用影子副本会降低包含目标表或索引的表空间的空间需求。
  • 能够使用除了现有集群索引以外的索引来重新集群数据。

传统重组的缺点

此方法具有下列缺点:
  • 对表的访问受限;在 REORG 操作的排序和构建阶段,只能进行读访问。
  • 正在重组的表的影子副本需要大量空间。
  • 对 REORG 过程的控制能力较低;脱机 REORG 操作无法暂停和重新启动。
  • 由于在单个工作单元中处理整项操作,因此可能需要大型活动日志。

使用 FULL 选项的原位重组的优点

此方法具有下列优点:
  • 除了 REORG 操作的截断阶段以外,允许对表进行全面的访问。
  • 对 REORG 过程的控制能力较高,该过程以异步方式在后台运行,并且可暂停、恢复或停止。例如,如果正在对表运行大量的更新或删除操作,那么可暂停进行中 REORG 操作。
  • 在发生故障的情况下可恢复过程。
  • 由于表以递增方式来处理,因此降低了工作存储空间需求。
  • 重组的好处将立即体现,甚至可在 REORG 操作完成前体现。

使用 FULL 选项的原位重组的缺点

此方法具有下列缺点:
  • 数据或索引的集群方式并非最佳,这取决于在 REORG 操作期间访问表的事务的类型。
  • 与脱机 REORG 操作相比,性能欠佳。
  • 日志记录需求可能很高。这些需求取决于移动的行数、对表定义的索引数以及这些索引的大小。
  • 由于此过程执行的是索引维护操作而非重建操作,因此可能需要执行后续的索引 reorg 操作。
  • 由于联机重新组织无法移动内部记录,因此空间回收不完整。

使用 CLEANUP OVERFLOWS 选项的原位重组的优点

此方法具有下列优点:
  • 允许对表进行全面的访问。
  • 对 REORG 过程的控制能力较高,该过程以异步方式在后台运行,并且可暂停、恢复或停止。例如,如果正在对表运行大量的更新或删除操作,那么可暂停进行中 REORG 操作。
  • 在发生故障的情况下可恢复过程。
  • 更正表中存在的所有指针和溢出对,这会提高对表的 SQL 访问的性能特征。
  • 由于表以递增方式来处理,因此降低了工作存储空间需求。
  • 重组的好处将立即体现,甚至可在 REORG 操作完成前体现。
  • 与使用 FULL 选项的原位重组相比,总体日志记录和影响更少。

使用 CLEANUP OVERFLOWS 选项的原位重组的缺点

此方法具有下列缺点:
  • 除了解析指针和溢出对之外,没有任何优点。仅当表具有大量指针和溢出对,并且这些对正在导致性能问题时,才使用此方式。

使用 RECLAIM EXTENTS 的优点

此方法具有下列优点:
  • 允许对表进行全面的访问。
  • 在发生故障的情况下可恢复过程。不会丢失在故障点之前已完成的工作。操作从故障点恢复直到完成。
  • 轻量级操作。
  • 将空间释放回表空间,然后可由任何表空间使用者对其进行使用。
  • 由于表以递增方式来处理,因此降低了工作存储空间需求。

使用 RECLAIM EXTENTS 的缺点

此方法具有下列缺点:
  • 不会重新群集数据。
  • 不会更正表中存在的所有指针和溢出对。
  • 不会将全部现有行转换至当前表模式。
  • 由于此过程执行的是索引维护操作而非重建操作,因此可能需要执行后续的索引 reorg 操作。
表 1. 联机重组与脱机重组的比较
特征 传统重组 使用 FULL 选项的原位重组 使用 CLEANUP OVERFLOWS 选项的原位重组 RECLAIM EXTENTS
性能
完成后数据的集群因子 良好 非最佳集群 不会进行任何集群 不会进行任何集群
并行性(对表的访问) 从不能访问到只读访问 从只读访问到完全访问 从只读访问到完全访问 从不能访问到完全访问
数据存储空间需求 非常大 不是非常大 不是非常大 不是非常大
日志记录存储空间需求 不是非常大 可能非常大 可能非常大 可能非常大
用户控制(暂停和重新启动重组过程的能力) 控制能力较低 控制能力较高 控制能力较高 控制能力较低,因为无法重新启动或暂停
可恢复性 可恢复,但是可能比联机重组用更多时间。 可恢复 可恢复 可恢复
索引重建 进行 不进行 不进行 不进行
支持所有类型的表
是否能够指定除集群索引以外的索引
是否使用临时表空间
表 2. 联机重组和脱机重组支持的表类型
表类型 支持脱机重组 支持联机重组
多维集群表 (MDC) 1 8
插入时间集群 (ITC) 表 1, 7 6, 7
范围集群表(RCT) 2
追加方式表 3
包含长字段或大对象 (LOB)数据的表 5 5
系统目录表:
  • SYSIBM.SYSCODEPROPERTIES
  • SYSIBM.SYSDATATYPES
  • SYSIBM.SYSNODEGROUPS
  • SYSIBM.SYSROUTINES
  • SYSIBM.SYSSEQUENCES
  • SYSIBM.SYSTABLES
  • SYSIBM.SYSVARIABLES
注意:
  1. 由于通过 MDC 块索引自动维护集群,所以 MDC 表的重组只涉及空间回收。不能指定索引。类似地,对于 ITC 表,无法使用集群索引来指定重组。
  2. RCT 的范围区域始终保持集群。
  3. 可在将追加方式禁用之后运行联机重组。
  4. 重组长字段或大对象 (LOB) 数据相当耗时,并且无法提高查询性能。执行重组仅出于空间回收目的。
  5. 联机表重组不会对 LONG/LOB 数据进行重组,但会对其他列进行重组。
  6. 支持对 ITC 表进行联机重组。重组是使用 REORG 命令的现有 RECLAIM EXTENTS 表子句完成的。
  7. REORG 命令的 RECLAIM EXTENTS 表子句会隐式协调稀疏扩展数据块。此整合促使执行更多地进行空间回收,但是与 DB2® V10.1 相比时,实用程序执行的持续时间更长。
  8. 使用 RECLAIM EXTENTS 时不受支持。
注: 可使用联机表移动存储过程作为原位重组的替代方法。请参阅“使用 ADMIN_MOVE_TABLE 过程以联机方式移动表”。

监视表 reorg 操作的进度

有关当前表 REORG 操作的进度信息会写入历史记录文件。历史记录文件包含每个重组事件的记录。要查看此文件,请对包含所重组表的数据库运行 LIST HISTORY 命令。

也可使用表快照来监视表 REORG 操作的进度。无论如何设置数据库系统监视器表开关,系统均会记录表重组监视数据。

如果发生错误,那么 SQLCA 消息将写入历史记录文件。如果执行原位表 REORG 操作,会将状态记录为 PAUSED。