oracle文档
says在更改索引子句时收缩空间紧凑和合并非常相似,可以互相替换,但Tom
found在行为上有一些差异.
由于合并版在Oracle数据库的标准版中不可用,我认为使用它有一些好处.
那么,有什么区别?我可以在动态变化的索引上执行缩小空间紧凑吗?
解决方法
上面的答案是错误的.基本上有4种选择.
1 – ALTER INDEX COALESCE
2 – ALTER INDEX SHRINK SPACE
3 – ALTER INDEX SHRINK SPACE COMPACT
4 – ALTER INDEX REBUILD
选项1和3不会释放块.他们只是释放现有街区的空间. Coalesce的工作稍差一点,会有更多的块只有25-50%的可用空间,而收缩空间紧凑,会有更多的块有75-100%的可用空间.但是,块的总数保持不变.例如,具有200个具有合并的块的索引,并且在随机删除1/5行之后,将具有~1 / 5的索引块具有25-50%的可用空间,而其余的保持满.
另一方面,缩小空间和重建会释放块,并将它们合并到现有块中,从而减少块的总数.我认为唯一的区别是速度.当您从大表中仅删除5%时,没有理由重建整个索引,并且它将非常慢.但是,缩小空间在这里可能会快一点,因为它不会重建整个索引,只需重新组织块.
显然,最快的选择是通过紧凑型选项来合并或缩小空间.