管理索引表:深入研究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 索引已损坏。

  不能删除约束所需的索引,因此,必须先禁用或删除相关的约束。

原文地址:https://www.cnblogs.com/polestar/p/2473608.html