REORG TABLE命令

REORG TABLE命令

使用说明

以下限制适用于 REORG TABLE 命令的使用:

REORG 实用程序不支持使用昵称。

声明的临时表 或创建的临时表不支持 REORG TABLE 命令。

无法在视图上使用 REORG TABLE 命令。

表的重组与范围集群表不兼容,因为表的范围区域始终保持集群。

当存在表的任何表空间的联机备份正在运行时,无法在 DMS 表空间中的分区表上使用 REORG TABLE 命令。 此限制包括 LOB 和索引的备份。

REORG TABLE 命令不能使用基于索引扩展的索引。

如果表处于 reorg pending 状态,那么不允许对该表进行原地重组。

不支持共享临时 DMS 表空间的并发表重组。

如果表具有具有在其上定义的基于表达式的键的索引,那么不支持就地表重组。

在对事件监视器写入的表运行重组操作之前,需要取消激活该表上的事件监视器。

对于数据分区表,以下限制适用于 REORG TABLE 命令的使用:

该表必须在 SYSCAT.TABLES 。

重组会跳过由于连接或拆离操作而处于受限状态的数据分区。 如果指定了 ON DATA PARTITION 子句,那么该分区必须完全可访问。

如果在表重组期间发生错误,那么某些索引或索引分区可能无效。 如果重组达到或通过第一个数据分区的替换阶段,那么表的非分区索引将被标记为无效。 达到或通过替换阶段的任何数据分区的索引分区被标记为无效。 下一次访问表或数据分区时,将重建索引。

发出带有 ON DATA

PARTITION 子句的 REORG TABLE 命令只会使指定的数据分区脱离 reorg pending 状态。 当仅具有对表定义的分区索引的数据分区表处于 reorg pending 状态时,此限制适用。 要使表的其余分区脱离 reorg pending 状态,请对整个表发出 REORG TABLE 命令 (不带 ON DATA

PARTITION 子句)。 您还可以对其余每个分区发出带有 ON DATA PARTITION 子句的 REORG TABLE 命令。

有关当前进度和索引重组的信息将写入数据库活动的历史记录文件。 历史记录文件包含每个重组事件的记录。 要查看此文件,请对包含要重组的表的数据库运行 LIST HISTORY 命令。

您还可以使用表快照来监视表和索引重组的进度。 无论 "数据库监视器表切换" 设置如何,都将记录表重组监视数据。

如果发生错误,那么会将 SQLCA 内存转储写入历史记录文件。 对于就地表重组,状态记录为 PAUSED。

如果针对索引对表进行了集群,那么如果对该索引进行过多修改,那么该表可能会变为非集群。 此情况会对使用索引扫描访存行的选择操作的性能产生负面影响。 CLASSIC 或 INPLACE 表重组可用于重新集群数据。 但是,在 Db2 中实现更智能的数据预取可降低此类场景的影响,并降低对与索引相关的集群表的需求。

对于 INPLACE 表重组,如果表具有两个或更少的页面,那么不会运行 REORG 操作。 在历史记录文件中没有针对 REORG 操作的条目,并且任何快照或监视指标都不会显示 REORG 信息。

在重组的最后阶段,经典表重组 (脱机重组) 将重建索引。 准备重组表时,请在 REORG TABLE 命令中指定临时表空间。 如果您有另一个临时表空间,那么可以将其用于伴随表重组的排序。 但是,原地表重组 (联机重组) 不会重建索引。 最好在原地表重组完成后发出 REORG INDEXES 命令。 就地表重组是异步的,因此请确保就地表重组已完成,然后再发出 REORG INDEXES 命令。 在原地表重组完成之前发出 REORG INDEXES 命令可能会导致重组失败 (SQLCODE -2219)。

当 REORG 在 MDC 表上重建索引时,未设置 Full_Block 提示位。 由于未设置 Full_Block 提示,因此如果在 REORG 完成并打开 DB2_TRUST_MDC_BLOCK_FULL_HINT 注册表变量之后从现有维值插入行,那么可能会迂到降低的插入性能。 在插入该维值完成后,将自动提高每个维值的插入性能。 有关更多信息,请参阅 DB2_TRUST_MDC_BLOCK_FULL_HINT 性能变量。

REORG TABLE 命令的候选者是多次修改以使数据碎片化且访问性能明显下降的表。 您还必须在更改结构化类型列的内联长度后启动 REORG TABLE 实用程序,以从更改的内联长度中获益。 使用 REORGCHK 命令来确定表是否需要重组。 在启动 REORG TABLE 实用程序之前,请确保完成所有数据库操作并释放所有锁定。 此步骤可以通过在关闭所有 WITH HOLD 打开的游标之后发出 COMMIT 或发出 ROLLBACK 来完成。 重组表后,请使用 RUNSTATS 来更新表统计信息,并使用 REBIND 来重新绑定使用此表的程序包。 重组实用程序将隐式关闭所有游标。

通过 Db2 9.7 修订包 1 和更高版本,可以在数据分区表上发出使用 CLASSIC 选项的 REORG TABLE 命令,以同时重组分区上的不同数据分区或分区索引。 同时重组不同的数据分区或者重组分区的分区索引时,用户可以访问不受影响的分区,但是无法访问受影响的分区。 必须满足以下所有条件才能发出在同一表上同时运行的 REORG 命令:

每个 REORG 命令都必须使用 ON

DATA PARTITION 子句指定不同的分区。

每个 REORG 命令都必须使用 ALLOW NO ACCESS 方式来限制对数据分区的访问。

如果发出 REORG

TABLE 命令,那么分区表必须仅具有分区索引。 不能对表定义非分区索引(由系统生成的 XML 路径索引除外)。

对于没有非分区索引 (系统生成的 XML 路径索引除外) 且具有分区 P1, P2, P3和 P4的分区表 T1 ,可以并发运行以下 REORG 命令:REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P1

REORG TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P2

REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P3

当您使用并发 REORG 命令时,不支持以下操作:

在表中使用不带 ON DATA PARTITION 子句的 REORG 命令。

对表使用 ALTER TABLE 语句来添加,连接或拆离数据分区。

正在将数据装入到表中。

运行包含表的联机备份。

如果表包含混合行格式,因为表值压缩已激活或取消激活,那么脱机表重组可以将所有现有行转换为目标行格式。

对于分布在多个数据库分区中的表,当表或索引重组失败时,只有发生故障的数据库分区才会回滚表或索引重组。

如果重组不成功,那么不得删除临时文件。 数据库管理器 使用这些文件来恢复数据库。

如果指定了索引的名称,那么 数据库管理器 将根据索引中的顺序重新组织数据。 要最大化性能,请指定通常在 SQL 查询中使用的索引。 如果未指定索引的名称,并且存在集群索引,那么将根据集群索引对数据进行排序。

表的 PCTFREE 值确定每页指定的可用空间量。 如果未设置该值,那么实用程序将在每个页面上填充尽可能多的空间。

要在表重组后完成表空间前滚恢复,必须启用常规表空间和大型表空间以进行前滚恢复。

如果表包含不使用 COMPACT 选项的 LOB 列,那么 LOB DATA 存储对象在表重组后可能会显着增大。 此步骤可以是重组行的顺序以及使用的表空间类型 (SMS 或 DMS) 的结果。

REORG TABLE 命令可能会重新创建基于 XML 数据的索引。 有关更多信息,请参阅 重新创建基于 XML 数据的索引。

就位 REORG 操作可能无法完全回收表中的空间,因为它无法移动内部记录。

相关推荐

逗号用计算机怎么打,使用电脑如何输入特殊字符符号?这些输入小技巧一看就会...
锅炉容量单位名称为MW和t/h,其含义如何?两者之间有什么关系?如何换算?
废铜提纯全解密:资深回收师傅教你4步法与安全秘籍
无广告视频软件