Sql-Server
碎片整理 - 重建索引 SQL Server 2005
我正在研究對數據庫進行碎片整理,我正在尋找以下 SQL 語句:
ALTER INDEX ALL ON mytablename REBUILD WITH(ONLINE = ON)
當我從 中提取資訊時
sys.dm_db_index_physical_stats
,我看到百分比非常高 - 70%、80% 和 90%(!)。所以這告訴我我想要一個REBUILD
,而不是一個REORGANIZE
。在執行這些之前我有幾個問題
REBUILDS
。
- 它可以在程序使用數據庫時執行嗎?(
ONLINE = ON
告訴我是的,但我想確認它不會崩潰任何東西。)還是在不使用時執行更好?- 我閱讀
REBUILD
會使事情執行得更慢。那是在重建索引的時候嗎?(或永遠之後)- 重建所有索引/或更確切地說是每個索引需要多長時間?
- 有沒有我需要注意的副作用或其他資訊?這是生產/實時數據庫。
編輯:最後,重建它的最佳方法是什麼?循環遍歷百分比大於 30 的所有對象?要麼?
謝謝!
- 是的,您可以在數據庫與活動使用者聯機時重建。如果可能的話,最好在非高峰期進行。
- 在重建期間,您的查詢會執行得更慢,主要是由於重建索引的 I/O 成本。這有多明顯取決於您的系統的具體情況。性能損失僅在重建期間 - 而不是永遠。
- 同樣,重建的持續時間取決於您的特定設置。您應該嘗試在等效的開發或登台伺服器上執行它。
- 沒有其他相關的副作用。重建完成後,您將恢復正常執行。