我有一個生產SQL Server 2008,其中8 TB遍佈多個數據庫。 我已經刪除了大約85%的數據,並且必須恢復磁盤空間。 所有USED_SPACE的最終總和爲1.2 TB。提高SQL Server DBCC SHRINKFILE的性能
此SHRINKFILE
過程必須適合每個數據庫7小時的維護時段。
但是每個人的DBCC SHRINKFILE
需要MANY幾個小時才能運行。例如,將800 GB數據庫縮小至120 GB需要15個小時以上。
不幸的是,超過了我的維護窗口,我不得不殺死這個進程,希望數據庫不會被破壞(後面的DBCC CHECKDB
顯示它們很好)。
我可以看到DBCC SHRINKFILE
沒有充分利用可用的磁盤I/O和CPU資源。
例如,可以在幾個小時內將完整大小的數據庫文件從一個磁盤複製到另一個磁盤,但SHRINKFILE
過程需要相當長的時間。
注意:數據庫全部設置爲SIMPLE
恢復模式並且AUTO_SHRINK
已關閉。
是的,我看到很多人說永遠不會這樣做,因爲它破壞索引 - 我打算在SHRINKFILE
完成時重建索引。
有沒有辦法提高SHRINKFILE
命令或其他解決方案的優先級?以下是我正在考慮的一些選項:
- SET DEADLOCK_PRIORITY HIGH在運行SHRINKFILE之前的同一會話中。 (但我懷疑這會有幫助。)
- 創建一個新的數據庫並逐個複製所有數據。
請幫忙。
這實際上與**編程**(其中*本站*全部是關於**)沒有任何關係,但是使用數據庫管理 - 因此它在這裏是脫離主題並屬於[dba。 stackexchange.com](http://dba.stackexchange.com) - 投票移動。 –
你說得對。有沒有辦法移動它 - 或者我應該在那裏創建一個新的? – Don
系統將遷移它,一旦共有五張選票遷移它 –