加蓋最大伺服器記憶體,以避免記憶體 - AWS 規定指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

加蓋最大伺服器記憶體,以避免記憶體

基於效能原因,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。

如需詳細資訊,請參閱 < 記憶體管理架構指南 > 中的 Microsoft SQL Server 說明文件 >。