'收缩空间紧凑'和'合并'之间有什么区别?

ZZa*_*ZZa 5 oracle indexing oracle10g

Oracle文档指出,改变期间指数条款shrink space compactcoalesce非常相似,可以相互替代,但汤姆发现的行为有所不同.

由于合并版在Oracle数据库的标准版中不可用,我认为使用它有一些好处.

那么,有什么区别?我可以shrink space compact在动态变化的索引上执行吗?

小智 5

上面的答案是错误的。基本上有4个选项。

1 - 更改索引合并

2 - 改变索引收缩空间

3 - ALTER INDEX 收缩空间紧凑

4 - 更改索引重建

选项 1 和 3 不释放块。它们只是释放现有块中的空间。Coalesce 的表现稍差一些,会有更多的块只有 25-50% 的可用空间,而在收缩空间紧凑的情况下,会有更多的块有 75-100% 的可用空间。但是,块的总数保持不变。例如,一个有 200 个块合并的索引,在随机删除 1/5 的行后,将有大约 1/5 的索引块有 25-50% 的可用空间,而其余的保持完整。

另一方面,收缩空间和重建确实释放了块,并将它们合并到现有的块中,从而减少了块的总数。我认为唯一的区别是速度。当你从一个大表中只删除 5% 时,没有理由重建整个索引,而且会很慢。然而,收缩空间在这里可能会快一点,因为它不会重建整个索引,只是重新组织块。

显然,最快的选择是使用紧凑选项合并或缩小空间。