选择重组表的方法
以下是用于进行表重组的四种方法:传统重组(脱机)、使用 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 操作。
| 特征 | 传统重组 | 使用 FULL 选项的原位重组 | 使用 CLEANUP OVERFLOWS 选项的原位重组 | RECLAIM EXTENTS |
|---|---|---|---|---|
| 性能 | 快 | 慢 | 快 | 快 |
| 完成后数据的集群因子 | 良好 | 非最佳集群 | 不会进行任何集群 | 不会进行任何集群 |
| 并行性(对表的访问) | 从不能访问到只读访问 | 从只读访问到完全访问 | 从只读访问到完全访问 | 从不能访问到完全访问 |
| 数据存储空间需求 | 非常大 | 不是非常大 | 不是非常大 | 不是非常大 |
| 日志记录存储空间需求 | 不是非常大 | 可能非常大 | 可能非常大 | 可能非常大 |
| 用户控制(暂停和重新启动重组过程的能力) | 控制能力较低 | 控制能力较高 | 控制能力较高 | 控制能力较低,因为无法重新启动或暂停 |
| 可恢复性 | 可恢复,但是可能比联机重组用更多时间。 | 可恢复 | 可恢复 | 可恢复 |
| 索引重建 | 进行 | 不进行 | 不进行 | 不进行 |
| 支持所有类型的表 | 是 | 否 | 否 | 否 |
| 是否能够指定除集群索引以外的索引 | 是 | 否 | 否 | 否 |
| 是否使用临时表空间 | 是 | 否 | 否 | 否 |
| 表类型 | 支持脱机重组 | 支持联机重组 |
|---|---|---|
| 多维集群表 (MDC) | 是1 | 是8 |
| 插入时间集群 (ITC) 表 | 是1, 7 | 是6, 7 |
| 范围集群表(RCT) | 否2 | 否 |
| 追加方式表 | 是 | 否3 |
| 包含长字段或大对象 (LOB)数据的表 | 是5 | 是5 |
系统目录表:
|
是 | 否 |
注意:
|
||
注: 可使用联机表移动存储过程作为原位重组的替代方法。请参阅“使用 ADMIN_MOVE_TABLE 过程以联机方式移动表”。
监视表 reorg 操作的进度
有关当前表 REORG 操作的进度信息会写入历史记录文件。历史记录文件包含每个重组事件的记录。要查看此文件,请对包含所重组表的数据库运行 LIST HISTORY 命令。
也可使用表快照来监视表 REORG 操作的进度。无论如何设置数据库系统监视器表开关,系统均会记录表重组监视数据。
如果发生错误,那么 SQLCA 消息将写入历史记录文件。如果执行原位表 REORG 操作,会将状态记录为 PAUSED。