MSSQL 重新生成索引,重新組織索引


> 5% 且 < = 30%

ALTER INDEX REORGANIZE

> 30%

ALTER INDEX REBUILD WITH (ONLINE = ON)*

 

* 重新生成索引可以聯機執行,也可以脫機執行。重新組織索引始終聯機執行。若要獲得與重新組織選項相似的可用性,應聯機重新生成索引。

這些值提供了一個大致指導原則,用於確定應在 ALTER INDEX REORGANIZE 和 ALTER INDEX REBUILD 之間進行切換的點。不過,實際值可能會隨情況而變化。必須要通過試驗來確定最適合您環境的閾值。

非常低的碎片級別(小於 5%)不應通過這些命令來解決,因為刪除如此少量的碎片所獲得的收益始終遠低於重新組織或重新生成索引的開銷。

 

:rebuild和rebuild online的區別

1、當rebuild 時一般對原先索引進行INDEX FAST FULL SCAN

2、當rebuild online的時不用原先索引而執行TABLE ACCESS FULL

3rebuild和rebuild online會發生sort,即需要用到temp表空間。

4rebuild 會阻塞dml(curd等)語句而rebuild online則不會。

5、rebuild online時系統會產生一個SYS_JOURNAL_xxx的IOT類型的系統臨時日志表,所有rebuild online時索引的變化都記錄在這個表中,當新的索引創建完成后,把這個表的記錄維護到新的索引中去,然后drop掉舊的索引,rebuild online就完成了。

 

ref:https://msdn.microsoft.com/zh-cn/library/ms189858(v=sql.105).aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM