【轉載】資料庫索引重建參考依據

kekele647發表於2010-07-02

【INDEX】重建索引的兩條參考依據

上一篇 / 下一篇  2010-06-30 22:37:04 / 個人分類:效能優化

如果是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/7389553/viewspace-666914/,如需轉載,請註明出處,否則將追究法律責任。

相關文章