2014-12-02 90 views
2

定期運行腳本並重建所有索引(如每週或每天)是否可靠和健康?它是否有可能導致數據問題或冗餘系統?我們可以信任索引重建查詢嗎?定期重建索引有什麼優點和缺點

alter index SYS_C0078275 rebuild;     
alter index SHOPPER_ID rebuild; 
+1

_「是否有機會導致數據問題或製作冗餘數據?」_你的意思是,有一些行沒有索引?或索引兩次? _「我們可以信任索引重建查詢嗎?」_索引是RDBMS的一個關鍵特性 - 如果你不能「信任」它們,那麼可能是切換到另一個RDBMS供應商的時候了......也就是說,我讓其他答案,如果這是可取的或不每天重建您的指數。 – 2014-12-02 22:45:01

回答

3

通常,索引不需要在Oracle中重建。一般來說,你所做的是爲數據庫造成額外的工作,並且(除非你有企業版並正在進行在線重建)爲你的應用程序增加了額外的停機時間。對於包含大量隨機插入的列(例如名稱)的索引,您可能需要一個處於良好穩定狀態的索引,並進行大量工作來壓縮它,只有Oracle在下一個階段才能完成大量工作一週來分裂一堆塊以恢復到穩定狀態。另外,還有一項工作必須加以監控,可能會失敗等等。一般來說,上漲空間很小(涉及對索引進行全面掃描的查詢可能會稍微快一點),而且很多潛在的缺點,所以這不是我會推薦做的事情。

也就是說,大量網站定期進行索引重建。如果您已經有一個停機時間窗口來重建,性能下降可能不會有問題。有可能你有一個罕見的系統有一個或兩個實際上受益於定期重建的索引(儘管你更希望修復造成索引需要重建的潛在問題)在這種情況下,重建一切都可能是有益的,即使它是過度殺傷。

關於索引重建的規範性討論是Richard Foote的Rebuilding the Truth。如果你想要更詳細的討論,那就是你想去的地方。

相關問題