Sql-Server

Sql Server - 增長數據庫文件的最佳實踐

  • January 11, 2018

我已經通過 sql server 2008 r2 中的數據收集器監控文件增長兩週了。該數據庫以每天 35 (MB) 左右的速度持續增長。數據庫尚未達到 2 GB 的初始大小。

數據庫文件自動增長設置為 5MB,我想嘗試不同的方法,所以我正在尋找建議和/或評論。

每週日晚上 1:30 有一個調整任務執行。該任務將:

  • 檢查數據庫完整性
  • 縮小日誌文件——(這沒關係,因為日誌模式很簡單)
  • 收縮數據庫
  • 重組索引
  • 重建索引
  • 更新統計
  • 清理歷史

我想在每週調整計劃中再添加兩個步驟:

  1. 如果已用空間達到某個門檻值或總大小,則將數據庫文件增加 500 MB。
  2. 如果已用空間達到總大小的某個門檻值,則將日誌文件增加 250 MB(收縮後)。

通過將增長負擔放在離線時間,我希望通過減少重負載期間的自動增長事件數量來獲得性能。

我有兩個與自動增長文件有關的問題。

  • 放置文件增長步驟的最佳位置是在目前步驟之前還是之後?
  • 如果我使用ALTER DATABASE|MODIFY FILE來增長文件,那麼我如何確定是否SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)

您的目標應該是盡可能少地自動增長。即使是即時文件初始化,一天七次也很痛苦。

不要做收縮數據庫。曾經。Shrinkfile,也許是,但只有在一個非常事件之後。收縮它只是為了再次增長是徒勞的,實際上應該被稱為自動碎片。

如果恢復模型很簡單,那麼您根本沒有辦法將日誌文件增加 250 GB。文件中的已用空間會隨著時間的推移自動清除,除非您在一個月前開始交易並且無意送出或回滾它。

所以我的建議是:

在安靜期間手動自動增長數據文件,使其大小可以適應幾個月的增長。這段時間你存它幹什麼?

將數據文件的自動增長增量設置為相對較小的值(這樣它在發生時不會中斷使用者),並在此事件上發出警報(例如,您可以在預設跟踪中擷取它,或通過擴展事件)。這可以告訴您,您正在達到您估計的高點,是時候再次手動增長了。此時,您需要保留本手冊,以防您想在不同的驅動器上添加新文件/文件組以容納空間,因為最終您將填滿目前驅動器。

例如,將日誌文件自動增長到有史以來最大的兩倍。它不應該進一步自動增長,除非有一些異常交易阻礙了事情。您還應該監視此事件,以便了解它們。

引用自:https://dba.stackexchange.com/questions/23305