本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
加蓋最大伺服器記憶體,以避免記憶體
基於效能原因,SQL Server 不會釋放已配置的記憶體。當 SQL Server 啟動時,它會慢慢地取用 min_server_memory 選項下指定的記憶體,然後繼續成長,直到達到在 max_server_ memory 選項中指定的值為止。如需有關這些設定的詳細資訊,請參閱 SQL Server 說明文件中的伺服器記憶體組態選項
SQL Server 記憶體有兩個元件:緩衝集區和非緩衝集區 (也稱為要離開的記憶體或 MTL)。max_server_memory 選項的值決定 SQL Server 緩衝集區的大小,該緩衝集區由緩衝區快取、程序快取、計畫快取、增益效果結構和其他快取所組成。
從 SQL 伺服器 2012 年開始,最小伺服器記憶體和最大伺服器記憶體帳戶,適用於所有快取的所有記憶體配置,包括SQLGENERAL
、、、、和。SQLBUFFERPOOL
SQLQUERYCOMPILE
SQLQUERYPLAN
SQLQUERYEXEC
SQLOPTIMIZER
SQLCLR
如需最大伺服器記憶體下的完整記憶體文件清單,請參閱 Microsoft SQL 伺服器文件中的系統。
若要檢查目前的最大伺服器記憶體值,請使用以下指令:
$ sp_configure 'max_server_memory'
我們建議您將 max_server_memory 限制為不會造成全系統記憶體壓力的值。沒有適用於所有環境的通用公式,但我們在本節中提供了一些準則。 max_server_memory 是一個動態選項,因此它可以在運行時進行更改。
作為一個起點,您可以確定 max_server_ memory,如下所示:
max_server_memory =
total_RAM
– (memory_for_the_OS
+MTL
)
其中:
-
對於操作系統的內存是 1-4 GB。
-
MTL (要離開的記憶體) 包括堆疊大小,在每個工作者執行緒的 64 位元電腦上為 2 MB,計算方式如下:
MTL = stack_size * max_worker_threads
或者,您可以使用:
max_server_memory =
total_RAM
– (1 GB for the OS +memory_basis_amount_of_RAM_on_the_server
)
其中 RAM 的存儲器基礎量被確定如下:
-
如果伺服器上的記憶體介於 4 GB 到 16 GB 之間,則每 4 GB 記憶體保留 1 GB。例如,對於具有 16 GB 的服務器,請保留 4 GB。
-
如果伺服器上的記憶體超過 16 GB,則每 4 GB 記憶體保留 1 GB 最多 16 GB,而在 16 GB 以上每 8 GB 記憶體保留 1 GB。
例如,如果伺服器具有 256 GB 的 RAM,則計算結果為:
-
作業系統需要 1 GB
-
最多 16 GB 記憶體:16 GB 記憶體:16/4 = 4 GB
-
在 16 GB 以上的剩餘記憶體:(256-16) /8 = 30
-
離開的記憶體總計:1 + 4 + 30 = 35 GB
-
最大伺服器記憶體數目:256-35 = 221 GB
在初始設定之後,請監視在一般工作負載持續時間內可釋放的記憶體,以判斷是否需要增加或減少配置給 SQL Server 的記憶體。
注意
Windows 會以 96 MB 的速度表示記憶體不足的資源通知,因此您需要緩衝區,但是您可以在具有 256 GB 或更高 RAM 的大型伺服器上,將可用 MB 設定為大於 1 GB。
如需詳細資訊,請參閱 < 記憶體管理架構指南