可以通过两种方法来重组表:传统重组(脱机)和原位置重组(联机)。
缺省行为是脱机重组。要指定联机重组操作,请使用 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
|
是 |
否 |
注意: - 由于通过 MDC 块索引自动维护集群,所以 MDC 表的重组只涉及空间回收。不能指定索引。
- RCT 的范围区域始终保持集群。
- 可以在将追加方式禁用后执行联机重组。
- 重组长字段或大对象 (LOB) 数据相当耗时,并且无法提高查询性能;仅当需要回收空间时,才应该重组这些数据。
- 联机表重组不会对 LONG/LOB 数据进行重组,但是会对其他列进行重组。
|
监视表重组操作的进度
有关当前表重组操作的进度信息将写入历史记录文件。历史记录文件包含每个重组事件的记录。要查看此文件,请对正在重组的表所在的数据库执行
LIST HISTORY 命令。
此外,也可使用表快照来监视表重组操作的进度。无论如何设置数据库系统监视器表开关,系统均会记录表重组监视数据。
如果发生错误,那么 SQLCA 消息将写入历史记录文件。对于原位置表重组操作而言,状态将被记录为 PAUSED。