Oracle關于重建索引爭論的總結
來源:易賢網 閱讀:877 次 日期:2014-10-14 10:55:50
溫馨提示:易賢網小編為您整理了“Oracle關于重建索引爭論的總結”,方便廣大網友查閱!

索引重建是一個爭論不休被不斷熱烈討論的議題。當然Oracle官方也有自己的觀點,我們很多DBA也是遵循這一準則來重建索引,那就是Oracle建議對于索引深度超過4級以及已刪除的索引條目至少占有現有索引條目總數的20% 這2種情形下需要重建索引。近來Oracle也提出了一些與之相反的觀點,就是強烈建議不要定期重建索引。本文是參考了1525787.1并進行相應描述。

1、重建索引的理由

a、Oracle的B樹索引隨著時間的推移變得不平衡(誤解)

b、索引碎片在不斷增加

c、索引不斷增加,刪除的空間沒有重復使用

d、索引 clustering factor (集群因子)不同步,可以通過重建修復(誤解)

2、重建索引的本質

本質:重建索引在數據庫內部是先執行刪除操作,再執行插入操作。

3、反對重建索引的理由

a. 大多數腳本都依賴 index_stats 動態表。此表使用以下命令填充:

analyze index ... validate structure;

盡管這是一種有效的索引檢查方法,但是它在分析索引時會獲取獨占表鎖。對于大型索引,其影響會是巨大的,因為在此期間不允許對表執行DML 操作。

雖然該方法可以在不鎖表的情況下在線運行,但是可能要消耗額外的時間。

b. 重建索引的直接結果是 REDO 活動可能會增加,總體系統負載也可能會提高。

插入/更新/刪除操作會導致索引隨著索引的分割和增長不斷發展。

重建索引后,它將連接的更為緊湊;但是,隨著對表不斷執行 DML 操作,必須再次分割索引,直到索引達到平衡為止。

結果,重做活動增加,且索引分割更有可能對性能產生直接影響,因為我們需要將更多的 I/O、CPU 等用于索引重建。

經過一段時間后,索引可能會再次遇到“問題”,因此可能會再被標記為重建,從而陷入惡性循環。

因此,通常最好是讓索引處于自然平衡和(或)至少要防止定期重建索引。

4、Oracle的最終建議

一般而言,極少需要重建 B 樹索引,基本原因是 B 樹索引很大程度上可以自我管理或自我平衡。

大多數索引都能保持平衡和完整,因為空閑的葉條目可以重復使用。

插入/更新和刪除操作確實會導致索引塊周圍的可用空間形成碎片,但是一般來說這些碎片都會被正確的重用。

Clustering factor群集因子反映了給定的索引鍵值所對應的表中的數據排序情況。重建索引不會對群集因子產生影響,集群因子只能通過重組表的數據改變。

強烈建議不要定期重建索引,而應使用合適的診斷工具。

個人結論,如果重建索引的巨大工作量與之對應的是極小的收益,那就得不償失。如果系統有可用空閑期,重建之前和之后的測量結果表明性能有提高,值得重建。

5、改良方法

通常是優先考慮index coalesce(索引合并),而不是重建索引。索引合并有如下優點:

a、不需要占用近磁盤存儲空間 2 倍的空間

b、可以在線操作

c、無需重建索引結構,而是盡快地合并索引葉塊,這樣可避免系統開銷過大。

6、真正需要重建索引的情形

索引或索引分區因介質故障損壞

標記為UNUSABEL的索引需要重建

索引移動到新的表空間或需要改變某些存儲參數

通過SQL*Loader加載數據到表分區后,需要重建索引分區

重建索引以啟用鍵壓縮

位圖索引本質不同于B樹索引,建議重建

更多信息請查看IT技術專欄

更多信息請查看數據庫
易賢網手機網站地址:Oracle關于重建索引爭論的總結
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看