1 shrink space

压缩在第一阶段执行。在此阶段,行被尽可能地移动到片段的左边部分。在内部,行被数据包移动以避免锁定问题。在移动行之后,开始收缩操作的第二阶段。在此阶段,调整高水位标志(HWM),释放未使用的空间。
如果有长时间运行的查询,这些查询可能跨越收缩操作并试图从已回收的块中读取,那么COMPACT子句非常有用。当指定收缩空间压缩子句时,收缩操作的进度将保存在相应段的位图块中。这意味着下一次在同一段上执行收缩操作时,Oracle数据库服务器会记住已经完成的操作。然后,可以在非高峰时间重新发出不带COMPACT子句的SHRINK SPACE子句,以完成第二阶段。
2 shrink space 的好处
可以提高该段的扫描和DML操作的性能。这是因为在段缩小后,需要查看的块更少了。这一点尤其适用于:
全表扫描(更少、更密集的块)
更好的索引访问(由于树更紧凑,所以范围ROWID扫描上的I/Os更少)
此外,可以提高数据库内部空间利用效率,因为可以为需要的对象提供更多的空闲空间。
索引依赖关系是在段收缩操作期间处理的。在收缩相应的表之后,索引处于可用状态。因此,无需进一步维护。
实际的收缩操作在内部作为插入/删除操作处理。但是,DML触发器不会执行,因为数据本身没有改变。
同时迁移的行数可能会减少。但是,在执行shrink space之后,可能不会触及段中的所有块。因此,不能保证处理了所有迁移的行。
注意:建议在收缩操作后在索引组织的表(IOT)上重新构建二级索引。
最后修改时间:2020-09-01 09:43:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




