db2 reorg的四个阶段

传统表重组使用影子副本方法,从而构建正在重组的表的完整副本。
传统或脱机表 reorg 操作包括四个阶段:
SORT - 在此阶段,如果 REORG TABLE 命令中指定了索引,或者已对表定义集群索引,那么首先根据该索引对表行进行排序。如果指定了 INDEXSCAN 选项,那么使用索引扫描方法对表进行排序;否则,使用表扫描排序方法。此阶段仅适用于集群表 REORG 操作。空间回收 REORG 操作从构建阶段开始。
BUILD - 在此阶段,将构建整个表的重组副本,此操作在该表的表空间或者 REORG TABLE 命令中指定的临时表空间中执行。
REPLACE - 在此阶段,将原始表对象替换为临时表空间中的副本,或者在所重组表的表空间中创建指向新构建的对象的指针。
RECREATE ALL INDEXES - 在此阶段中,会重新创建先前对该表定义的所有索引。
在替换阶段开始之前,脱机表重组是一个完全成功或完全失败的过程。如果系统在排序或构建阶段崩溃,那么重组操作将回滚,并且不会在崩溃恢复期间重新执行。
如果系统在替换阶段开始之后崩溃,那么重组操作必须完成,这是因为已完成所有重组工作,原始表可能不再可用。在崩溃恢复期间,需要已重组的表对象的临时文件,而不是用于执行排序的临时表空间。恢复操作将完全重新开始替换阶段,并且需要恢复副本对象中的所有数据。在这种情况下,系统管理的空间 (SMS) 表空间与数据库管理的空间 (DMS) 表空间之间有一个差别:必须将 SMS 中已重组的表对象从一个对象复制到另一个对象;但在 DMS 中,如果在同一个表空间中执行重组,那么只需指向已重组的表对象,并且将删除原始表。将不重建索引,但在崩溃恢复期间会将索引标记为无效。数据库将根据一般规则确定重建索引的时间:在数据库重新启动时或第一次访问索引时。
如果在索引重建阶段发生崩溃,那么由于新的表对象已存在,因此不会重新执行任何操作。将按先前描述的方式来处理索引。
在前滚恢复期间,如果旧版本的表在磁盘上,那么重新进行重组操作。前滚实用程序使用构建阶段记录的记录标识 (RID) 来重新应用创建了已重组的表的操作,从而重复构建和替换阶段。将按先前描述的方式来处理索引。仅当最初使用了临时表空间时,已重组的对象的副本才需要临时表空间。在前滚恢复期间,可以同时重新执行多个重组操作(并行恢复)。

https://www.cndba.cn/hbhe0316/article/4790
https://www.cndba.cn/hbhe0316/article/4790 https://www.cndba.cn/hbhe0316/article/4790

脱机表重组的性能在很大程度上由数据库环境的特征决定。
以 ALLOW NO ACCESS 方式运行的重组操作与以 ALLOW READ ACCESS 方式运行的重组操作在性能方面几乎没有任何差别。差别在于,在 ALLOW READ ACCESS 方式的重组操作期间,实用程序可能必须先等待其他应用程序完成扫描并释放它们的锁定,然后才能替换该表。在以任何一种方式运行的重组操作的索引重建阶段,该表都不可用。
有关提高性能的技巧
如果有足够的空间,那么请对原始表和表的重组副本使用同一个表空间,以代替使用临时表空间。这将节省从临时表空间复制已重组的表所需的时间。
考虑在重组表之前删除不必要的索引,以便减少重组操作期间需要维护的索引数目。
确保正确设置已重组的表所在的表空间的预取大小。
调整 sortheap 和 sheapthres 数据库配置参数,以便控制可用于排序的空间量。由于每个处理器都将执行私有排序,因此 sheapthres 的值至少应该是 sortheap x 使用的处理器数。
调整页清理程序数,以确保尽快清除缓冲池中的脏索引页。https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.5.0/com.ibm.db2.luw.admin.perf.doc/doc/c0024853.htmlhttps://www.cndba.cn/hbhe0316/article/4790https://www.cndba.cn/hbhe0316/article/4790https://www.cndba.cn/hbhe0316/article/4790https://www.cndba.cn/hbhe0316/article/4790

要使用 REORG TABLE 命令来重组表,只需指定该表的名称。例如:
reorg table employee
您可以使用特定的临时表空间来重组表。例如:
reorg table employee use mytemp
您可以重组表并根据特定索引对行进行重新排序。例如:
reorg table employee index myindex
要使用 SQL CALL 语句来重组表,请通过 ADMIN_CMD 过程来指定 REORG TABLE 命令。例如:
call sysproc.admin_cmd (‘reorg table employee’)
要使用管理应用程序编程接口来重组表,请调用 db2Reorg API。https://www.cndba.cn/hbhe0316/article/4790https://www.cndba.cn/hbhe0316/article/4790https://www.cndba.cn/hbhe0316/article/4790

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux,oracle

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值