Sql-Server

增加 SQL Server 生產上的最大記憶體設置

  • June 20, 2019

我有一個帶有 5 個實例的生產框。

版本:SQL Server 2014 SP3 企業版。

我發現即使機器分配了 ~400GB 記憶體,所有 5 個實例上的組合MAX MEMORY設置小於 200GB。

這些實例不會受到記憶體壓力的影響,但是由於我們已經分配了該記憶體,因此不使用它是一種浪費。

我想將其增加到更高的值,為作業系統留出 10%(某些實例的分配比其他實例更高)。

但是,我以前從未對這個設置進行過如此大的增加。

我知道這是一個不需要重新啟動的動態設置,但是,我想知道以下幾點:

  • 我應該分兩個階段增加(即增加一半,等待一周然後再次增加)?
  • 如果 SQL Server 突然有這麼多記憶體可供使用,某些東西會突然中斷(或導致性能下降)嗎?

我們沒有啟用記憶體設置中的鎖定頁面,也沒有啟用跟踪標誌 834

我有一點不同的看法。

如果您沒有遇到記憶體壓力並且您的應用程序執行良好,為什麼要引入一個未知變數(在您的情況下 - 增加 sql server 最大記憶體)?您尚未測試此更改,因此存在風險。

如果您的伺服器上有更多頻寬,您可以考慮在伺服器上整合更多實例。

如果 SQL Server 突然有這麼多記憶體可供使用,某些東西會突然中斷(或導致性能下降)嗎?

是的,我遇到了性能下降問題,PROD 擁有更多記憶體並使用 TF 2335 解決了該問題。

您可以閱讀保羅的答案以獲取更多詳細資訊,但要點是:

緩衝池的潛在大小也會影響優化器的數據訪問成本模型。

您可以隨時更改 SQL Server 最大伺服器記憶體,但是當您這樣做時,SQL Server 計劃、數據和其他記憶體將被刷新。這意味著訪問 SQL Server 的新查詢將通過查詢計劃創建過程再次進行,這可能是一段時間的決定因素。因此,如果您真的想這樣做,請告知利益相關者您想更改最大伺服器記憶體並在負載相對較少時進行。還請告知人們,由於冷記憶體,很少有查詢在第一次執行期間可能需要更長的時間來執行。

我應該分兩個階段增加(即增加一半,等待一周然後再次增加)?

得到批准就做,負載比較少的時候做,沒必要分階段做。

如果 SQL Server 突然有這麼多記憶體可供使用,某些東西會突然中斷(或導致性能下降)嗎?

事情不會中斷,但是是的,因為記憶體被刷新,很少有查詢可能會在​​第一次執行時開始花費更多時間來執行。

我們沒有啟用記憶體設置中的鎖定頁面,

我建議您在執行 5 個實例時特別這樣做。由於某些惡意查詢/程序,任何實例都不應被允許佔用所有記憶體。最好為所有 SQL Server 實例設置最大限制。另請注意,在某些情況下 SQL Server 可以消耗超過最大限制。添加 LPIM 需要“SQL Server 重新啟動”

**理想情況:**當您計劃添加 LPIM 並且此時更改最大伺服器記憶體時,因為您沒有遇到任何問題,所以您有時間。

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