索引碎片識別及消除

對建有索引的表頻繁進行dml操做,會產生索引碎片,意味着對索引進行掃描時,須要讀取更多的block,影響執行效率,若是碎片比較大,而且可能會影響到執行計劃的準確性。能夠採用下面的方法對索引碎片作評估及消除。ui

一、識別索引碎片spa

計算公式: 索引碎片度 = 刪除的索引葉子數 / 總的索引葉子數 * 100%blog

爲保障準確性,先對索引作分析:索引

ANALYZE INDEX index_name VALIDATE STRUCTURE;get

查詢index_stats字典表,獲得索引碎片度:it

SELECT name, del_lf_rows/lf_rows*100 reclaimable_space_pct FROM index_stats;table

二、若是索引碎片度超過20%,能夠考慮重建索引效率

須要先檢查重建索引的表空間空間是否足夠;擴展

重建索引:date

alter index 用戶名.索引名 rebuild tablespace 表空間名 storage(initial 初始值 next 擴展值) nologging

若是不加tablespace參數,索引會重建到用戶默認表空間;

若是表空間空間不夠,沒法重建索引,能夠經過對索引進行整理來消除碎片:

若是空間不夠,能夠整理索引:

alter index用戶名.索引名 coalesce

三、表空間碎片整理

由於重建索引會刪除索引,對於較大的索引而言,會形成表空間碎片,因此重建索引後,能夠考慮整理表空間:

alter tablespace 表空間名 coalesce

相關文章
相關標籤/搜索