Sql-Server
Sql Server - 增長數據庫文件的最佳實踐
我已經通過 sql server 2008 r2 中的數據收集器監控文件增長兩週了。該數據庫以每天 35 (MB) 左右的速度持續增長。數據庫尚未達到 2 GB 的初始大小。
數據庫文件自動增長設置為 5MB,我想嘗試不同的方法,所以我正在尋找建議和/或評論。
每週日晚上 1:30 有一個調整任務執行。該任務將:
- 檢查數據庫完整性
- 縮小日誌文件——(這沒關係,因為日誌模式很簡單)
- 收縮數據庫
- 重組索引
- 重建索引
- 更新統計
- 清理歷史
我想在每週調整計劃中再添加兩個步驟:
- 如果已用空間達到某個門檻值或總大小,則將數據庫文件增加 500 MB。
- 如果已用空間達到總大小的某個門檻值,則將日誌文件增加 250 MB(收縮後)。
通過將增長負擔放在離線時間,我希望通過減少重負載期間的自動增長事件數量來獲得性能。
我有兩個與自動增長文件有關的問題。
- 放置文件增長步驟的最佳位置是在目前步驟之前還是之後?
- 如果我使用
ALTER DATABASE|MODIFY FILE
來增長文件,那麼我如何確定是否SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)
?
您的目標應該是盡可能少地自動增長。即使是即時文件初始化,一天七次也很痛苦。
不要做收縮數據庫。曾經。Shrinkfile,也許是,但只有在一個非常事件之後。收縮它只是為了再次增長是徒勞的,實際上應該被稱為自動碎片。
如果恢復模型很簡單,那麼您根本沒有辦法將日誌文件增加 250 GB。文件中的已用空間會隨著時間的推移自動清除,除非您在一個月前開始交易並且無意送出或回滾它。
所以我的建議是:
在安靜期間手動自動增長數據文件,使其大小可以適應幾個月的增長。這段時間你存它幹什麼?
將數據文件的自動增長增量設置為相對較小的值(這樣它在發生時不會中斷使用者),並在此事件上發出警報(例如,您可以在預設跟踪中擷取它,或通過擴展事件)。這可以告訴您,您正在達到您估計的高點,是時候再次手動增長了。此時,您需要保留本手冊,以防您想在不同的驅動器上添加新文件/文件組以容納空間,因為最終您將填滿目前驅動器。
例如,將日誌文件自動增長到有史以來最大的兩倍。它不應該進一步自動增長,除非有一些異常交易阻礙了事情。您還應該監視此事件,以便了解它們。