【INDEX】重建索引的两条参考依据

如果是OLTP系统,存在正大量的删除和更新操作的系统中,日积月累,索引将会千疮百孔,使用索引用来检索数据的效率会急转直下。因此要求我们定期的对索引进行维护,我们可以使用DROP/CREATE方式或REBUILD方式完成索引的重建,恢复索引应该有的效率。

问题来了,什么时候需要重建?重建索引的依据是什么呢?


有两个依据可供参考。第一个是,查看索引的“高度”,如果索引树高超过了4我们就需要重点关注;另外一个参考依据是,索引条目被删除的数据占总索引条目的百分比如果超过了20%,一般在这种情况下就要考虑重建索引。


如果获得这两个参考依据?方法其实很简单,我们仅需对索引进行一下分析,然后通过INDEX_STATS视图辅助分析即可。拿一个具体的例子看一下。

1.分析索引
nt5beijing@bidb> analyze index SALES_INFO_IDX validate structure;

Index analyzed.

2.得出重建索引的判断依据
nt5beijing@bidb> select HEIGHT,(DEL_LF_ROWS/LF_ROWS)*100 from index_stats;

    HEIGHT (DEL_LF_ROWS/LF_ROWS)*100
---------- -------------------------
         4                .312030747

通过这样一条简单的SQL语句便可以给出我们两条重要的重建索引的依据。

3.根据上面的统计结果有何结论?重建索引?不重建索引?
答案是:不一定!
重建的理由:此处我们看到,该索引的高度已经突破了4,可以考虑重新创建一下该索引。
不重建的理由:从删除的索引叶子的数据与索引叶子总条数的比例上看远远的小于20%,此时不到1%。

这种现象多见于数据仓库类系统。需要酌情对此类索引进行调整。

4.关于INDEX_STATS的参考
请参考《【索引】使用索引分析快速得到索引的基本信息》(http://space.itpub.net/519536/viewspace-620882)

5.小结
本文并没有给出索引重建的金科玉律,没有一成不变的法则,一切都是参考信息,具体定夺的人是自己。
在生产环境中如果考虑对索引进行维护,往往考虑的因素很多,在这些参考依据的基础上还要考虑是否有充足的维护窗口,是否可以容忍在索引维护期间系统出现的锁等待问题。是采用DROP/CREATE方式还是REBUILD方式也要具体场景具体分析。

Good luck.

secooler
10.06.30

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-666765/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-666765/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值