oracle重建索引的一些參考性依據

edwardking888發表於2010-07-02

如果是OLTP系統,存在正大量的刪除和更新操作的系統中,日積月累,索引將會千瘡百孔,使用索引用來檢索資料的效率會急轉直下。因此要求我們定期的對索引進行維護,我們可以使用DROP/CREATE方式或REBUILD方式完成索引的重建,恢復索引應該有的效率。

 

案例一:OLTP系統

1.分析索引
analyze index test.PK_RECORD validate structure;

Index analyzed.

2.得出重建索引的判斷依據
select HEIGHT,lf_blks,pct_used, br_blks, used_space, opt_cmpr_count, opt_cmpr_pctsave ,del_lf_rows/(decode(lf_rows,0,1,lf_rows)) *100 as deleted_pct
 from index_stats;

HEIGHT LF_BLKS PCT_USED BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE DELETED_PCT
3 31716 65 147 80491396 0 0 4.74961005701432E-5



通過這樣一條簡單的SQL語句便可以給出我們3條重要的重建索引的依據。



案例二:OLAP系統

1.分析索引

analyze index odsuser.IX_ACTFULL_EARNTIME validate structure;

2.得出重建索引的判斷依據

select HEIGHT,lf_blks,pct_used, br_blks, used_space, opt_cmpr_count, opt_cmpr_pctsave ,del_lf_rows/(decode(lf_rows,0,1,lf_rows)) *100 as deleted_pct
 from index_stats;

HEIGHT LF_BLKS PCT_USED BR_BLKS USED_SPACE OPT_CMPR_COUNT OPT_CMPR_PCTSAVE DELETED_PCT
4 1265345 70 1734 14207498567 1 0 0

因為該表的資料比較多,大約有10億條左右

 

index_stats欄位內容解釋如下:

LF_BLKS:索引使用的葉子塊(資料所在的塊)數目;
BR_BLKS:分支塊(索引結構中導航所用的塊)數目;
USED_SPACE:索引使用的空間,單位是位元組;
OPT_CMPR_COUNT:最優壓縮數;
OPT_CMPR_PCTSAVE:使用上面的最優壓縮數後最優節省壓縮百分比;

height:索引的高度。

deleted_pct : 資料刪除率

pct_used:使用百分比

在OLTP系統中

索引樹的高度大於3;使用百分比低於75%;資料刪除率大於20%,就需要考慮對索引重建

在OLAP系統中,因為比較特殊,表的資料往往都是上億條,所以不能參考oltp規律。

索引樹的高度大於4;使用百分比低於30%;資料刪除率大於15%,就需要考慮對索引重建

 

本文的定律不是金科玉律,只是提供一些參考性意見。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-666902/,如需轉載,請註明出處,否則將追究法律責任。

相關文章