分析index降低索引層次

不一樣的天空w發表於2017-07-07
分析index降低索引層次


1)分析索引
analyze index index_name validate structure;

2)查詢索引資訊:
select NAME,HEIGHT,LF_ROWS,LF_BLKS,DEL_LF_ROWS from index_stats where name='I_B_PACKAGE_STATE_TRANS_P1';

3)如果DEL_LF_ROWS有值;
alter index index_name rebuild;

4)再次查詢:
select NAME,HEIGHT,LF_ROWS,LF_BLKS,DEL_LF_ROWS from index_stats where name='I_B_PACKAGE_STATE_TRANS_P1';


=====================補充===================
analyzeindex **** validate structure  ——分析是否要重建索引,或者索引塊有沒有壞。分析完後index_stats就有結果了,你可以根據index_stats中的結果來分析是否要rebuild索引

Analyze index**** compute statistics —— 收集統計資料。

 
在analyze index 的時候需要兩個命令,分別是analyzeindex index_name validate structure. 和analyze index index_name compute statistics

 analyze index index_name validate structure:是用來分析索引的資料塊是否有壞塊,以及根據分析得到的資料(存放在index_stats)來判斷索引是否需要重新建立。

什麼樣的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了。

 validate structure有二中模式: online, offline, 預設是offline模式以offline模式分析時, 會對表加一個4級別的鎖(表共享),對run正在執行的系統可能造成一定的影響

而online模式則沒有表lock的影響,但當以online模式分析時, 在檢視index_stats沒有統計資訊。
 
analyze indexindex1 compute statistics:是用來統計index的分析資訊,來為CBO服務的。從9i開始,Oracle以建議使用dbms_stats package代替 analyze 

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

相關文章