管理索引表:深入研究B树索引--重建,合并,删除(理论篇3)
重建索引
如果表中记录频繁地被删除或插入,尽管表中的记录总量保持不变,索引空间的使用量会不断增加。虽然记录从索引中被删除,但是该记录索引项的使用空间不能被重新使用。因此,如果表变化不定,索引空间量会不断增加,不论表中记录数量是否增加,这是因为索引中无效空间会增加。 要回收那些曾被删除记录使用的空间,需要使用Alter index rebuild命令。
重建索引有两种方法:一种是最简单的,删除原索引,然后重建;第二种是使用ALTER INDEX … REBUILD命令对索引进行重建。
需要重建判断依据:
1.height >4
2.pct_used < 50%
3.del_lf_rows / lf_rows +0.001 > 0.03
合并索引
合并索引只是简单地将B树叶子节点中的存储碎片合并到一起,并不会改变索引的物理结构。
合并索引和重建索引都可以清理索引数据块中的碎片,但是又有区别:
合并索引:
1.不能将索引移动到其他表空间
2.代价比较低,不需要使用额外的存储空间
3.只能在B树的同一子树种进行合并,不会改变树的高度
4.可以快速释放叶子节点中未使用的存储空间
重建索引:
1.可以将索引移动到其他的表空间
2.代价比较高,需要使用额外的存储空间
3.重建整个B树,可以降低B树的高度
4.可以快递更改索引存储参数,如果在重建中指出了ONLINE关键字,还可以再重建索引时使用索引。
删除索引
1. 应用程序不再需要索引时,可将索引删除。
2. 在大量加载数据前,先删除索引,加载后再重新创建索引,这样做的好处有:
– 提高加载性能
– 更有效地使用索引空间
3. 仅定期使用的索引无需不必要的维护,尤其在基于易失表时更是如此。这是 OLTP 系统中的通常情况,在该系统中,年末或季度末会生成特殊的查询,以收集在总结会上使用的信息。
4. 当在某种类型的操作(如加载)期间出现例程失败时,可能会将索引标记为INVALID。在这种情况下,需要删除并重建索引。
5 索引已损坏。
不能删除约束所需的索引,因此,必须先禁用或删除相关的约束。