SQL Server 最小伺服器記憶體
在具有 64 GB RAM 的伺服器上使用帶有 SP2 的 SQL 2008 R2。考慮到 SQL Server 僅限於僅與數據庫引擎相關的服務,我已將最大伺服器記憶體設置為 58GB。我有一個關於設置最小伺服器記憶體的問題
如果我將最小伺服器記憶體設置為 48 GB,這是否意味著
a) 如果 Windows 向 SQL 發送記憶體不足通知 - SQL 伺服器將修剪其所有池並嘗試將記憶體使用量保持在 48 GB 記憶體?
b) 在 Windows 進行激進的工作集修剪的情況下——它會將 SQL 伺服器的記憶體使用量保留為 48 GB,從而為 SQL 的記憶體使用量設置一個“下限”。
c) 對最小伺服器記憶體有什麼建議嗎?
搜尋網路——網際網路上有大量關於最大伺服器記憶體的資訊,但我讀過的只有幾個地方(Brent Ozar 部落格的配置最佳實踐)將最小伺服器記憶體設置為伺服器上總可用 RAM 的 50%。
我建議您將 MIN 伺服器記憶體保留為 DEFAULT。
Min server memory 控制 sql server 將嘗試保持送出的最小物理記憶體量。當 SQL Server 服務啟動時,它不會獲取 Min Server Memory 中配置的所有記憶體,而是僅以所需的最小值啟動,並根據需要增長。一旦記憶體使用量增加到超過 Min Server Memory 設置,SQL Server 將不會釋放任何低於該數量的記憶體。
Bob Dorr將此設置解釋為:
最小伺服器記憶體
小心使用最小伺服器記憶體設置。這是 SQL Server 的底層。一旦送出記憶體達到最小伺服器記憶體設置 SQL Server 將不會釋放低於標記的記憶體。如果將最大伺服器記憶體設置為 59GB,將最小伺服器記憶體設置為 56GB,但伺服器需要將 SQL Server 降為 53GB,SQL Server 不會低於 56GB。當您將此設置與記憶體中的鎖定頁面結合使用時,無法對記憶體進行分頁。這可能導致不需要的性能行為和分配失敗。
搜尋網路——網際網路上有大量關於最大伺服器記憶體的資訊
這是因為,此設置調整最少(人們只是將其設置為預設值),而是通常調整最大記憶體,因為它是緩衝池的“上限”。一個好的 max memory 值將確保在伺服器上執行的 windows 和其他程序將有足夠的物理記憶體來執行它們的工作,而不會強制 sql server修剪。