什么样的index需要rebuild?
以前写程序的时候,经常会遇到大数据量的情况,所有要对Oracle中各种优化性能比较熟悉,当然也遇到过比较头疼的问题,就比如今天跟大家分享的关于index的问题。
本来Index是用来帮助我们提高数据检索的性能,但是遇到数据库庞大并且程序逻辑复杂的时候,就会建立N个Index。有时候用户会突然反馈程序变得特
别慢,我们程序员只能一点一点查,但查到数据库的时候,看index也是正常在使用没什么异常,为什么会导致程序变慢呢?
之前逛论坛的时候,看到一篇关于index需要rebuild的帖子,觉得很好,跟大家分享一下,什么样的index需要rebuild?
当一个table经常进行DML操作时,它的索引会存在许多block空间的浪费,这是因为index block中的记录只有在全部表示为不可用时, block 才能被加入到freelist中去被重新利用。所以我们需要寻找那些浪费空间很严重的index。
方法是:
1) analyze index index_name validate structure;
2) select del_lf_blk_len/lf_blk_len from index_stats
where name = :index_name;
3) 如果结果大于20%, 那你的Index就可以被rebuild了。
如果有跟我遇到过同样问题的童鞋,不妨可以试一试!
浙公网安备 33010602011771号