Sql-Server

添加數據文件更好還是增加現有文件更好(MAXSIZE)

  • February 21, 2020

作為開發人員,我對 SQL-Server 非常熟悉,但對於 DBA 角色卻不是很熟悉。

目前我正在開發一個相當大的數據庫(~7TB,存在於 7 個文件中,大小相同,並且都在一個文件組中)。DB 磁碟空間不足。

客戶將可用空間增加 2 TB。

先說幾點:

  • 系統是故障轉移集群
  • 這是 - 為什麼永遠 - 沒有添加第二個文件組的選項。
  • 我知道使用第二個文件組可能會帶來很大的好處……(客戶不想要。這是一個舊系統,沒有人敢於不必要地觸摸它……)

我正在考慮的選項:

  • 我可以使用ALTER DATABASEwithMODIFY FILE來增加現有文件的大小(目前每個文件約 1TB)。
  • 我可以ADD FILE用來添加一兩個與現有文件類似的附加文件。

問題

  • 故障轉移集群有什麼特別要記住的嗎?
  • 有什麼理由偏愛其中一個選項嗎?

備註:目標是盡可能減少影響

故障轉移集群有什麼特別要記住的嗎?

有什麼理由偏愛其中一個選項嗎?

是的,尤其取決於您的 IO 子系統。SQL Server 在決定使用哪個文件來分配新範圍時使用兩種算法。循環和比例填充。我的建議是使用您的第一個選項。

我可以使用 ALTER DATABASE 和 MODIFY FILE 來增加現有文件的大小(目前每個文件約 1TB)。

輪詢意味著 SE 將嘗試從文件組中的每個文件連續分配。例如,對於在主文件組中有兩個文件(文件 ID 為 1 和 3,因為 2 始終是日誌文件)的數據庫,SE 將嘗試從文件 1 然後文件 3 然後文件 1 然後文件 3 分配,並且很快。

這種機制的轉折在於,SE 還必須考慮文件組中每個文件中有多少可用空間,並從具有更多可用空間的文件中分配更多範圍。換句話說,SE 將按比例更頻繁地從具有更多可用空間的文件組中的文件中分配。這種扭曲稱為比例填充。

比例填充的工作原理是為文件組中的每個文件分配一個數字,稱為“跳過目標”。您可以將其視為反向加權,其中值高於 1 時,在循環循環時跳過該文件的次數越多。在循環期間,檢查文件的跳過目標,如果它等於 1,則進行分配。如果跳過目標高於 1,則將其減 1(最小值為 1),不進行分配,並且考慮轉移到文件組中的下一個文件。

Paul Randal 舉例詳細解釋了這一點, 調查比例填充算法

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