DB2 V9.7 for Linux, UNIX, and Windows

选择重组表的方法

可以通过两种方法来重组表:传统重组(脱机)和原位置重组(联机)。

缺省行为是脱机重组。要指定联机重组操作,请使用 REORG TABLE 命令的 INPLACE 选项。

另一种方法是,使用联机表移动存储过程进行原位置重组。请参阅“使用 ADMIN_MOVE_TABLE 过程以联机方式移动表”。

每种方法都有其优点和缺点,概述如下。选择重组方法时,应考虑哪种方法提供的优点是您优先要解决的方面。例如,如果发生故障时进行恢复比性能更重要,那么最好使用联机重组方法。

脱机重组的优点

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

脱机重组的缺点

此方法具有下列缺点:
  • 对表的访问受限:在重组操作的排序和构建阶段,只能进行读访问
  • 正在重组的表的影子副本需要大量空间
  • 对重组过程的控制能力较低;脱机重组操作无法暂停和重新启动

联机重组的优点

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

联机重组的缺点

此方法具有下列缺点:
  • 数据或索引的集群情况并不完美,这取决于在重组操作期间访问表的事务的类型
  • 与脱机重组操作相比,性能欠佳
  • 日志记录需求可能较高,这取决于移动的行数、对表定义的索引数以及那些索引的大小
  • 由于此过程执行的是索引维护操作而非重建操作,因此可能需要执行后续的索引重组操作
表 1. 联机重组与脱机重组的比较
特征 脱机重组 联机重组
性能
完成后数据的集群因子 良好 非最佳集群
并行性(对表的访问) 从不能访问到只读访问 从只读访问到完全访问
数据存储空间需求 非常大 不是非常大
日志记录存储空间需求 不是非常大 非常大
用户控制(暂停和重新启动重组过程的能力) 控制能力较低 控制能力较高
可恢复性 不可恢复 可恢复
索引重建 进行 不进行
支持所有类型的表
是否能够指定除集群索引以外的索引
是否使用临时表空间
表 2. 联机重组和脱机重组支持的表类型
表类型 是否受脱机重组支持 是否受联机重组支持
多维集群表 (MDC) 1
范围集群表 (RCT) 2
追加方式表 3
包含长字段或大对象 (LOB) 数据的表 4 5
系统目录表:
  • SYSIBM.SYSCODEPROPERTIES
  • SYSIBM.SYSDATATYPES
  • SYSIBM.SYSNODEGROUPS
  • SYSIBM.SYSROUTINES
  • SYSIBM.SYSSEQUENCES
  • SYSIBM.SYSTABLES
  • SYSIBM.SYSVARIABLES
注意:
  1. 由于通过 MDC 块索引自动维护集群,所以 MDC 表的重组只涉及空间回收。不能指定索引。
  2. RCT 的范围区域始终保持集群。
  3. 可以在将追加方式禁用后执行联机重组。
  4. 重组长字段或大对象 (LOB) 数据相当耗时,并且无法提高查询性能;仅当需要回收空间时,才应该重组这些数据。
  5. 联机表重组不会对 LONG/LOB 数据进行重组,但是会对其他列进行重组。

监视表重组操作的进度

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

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

如果发生错误,那么 SQLCA 消息将写入历史记录文件。对于原位置表重组操作而言,状态将被记录为 PAUSED。