メモリ不足を避けるため、最大サーバメモリを制限する - AWS の規範的ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

メモリ不足を避けるため、最大サーバメモリを制限する

パフォーマンス上の理由から、SQL Server はすでに割り当てたメモリを解放しません。SQL Serverを起動すると、指定されたメモリをゆっくりと消費しますmin_server_memoryオプションを選択し、で指定された値に達するまで増加し続けますmax_server_memoryオプション。(これらの設定の詳細については、「」)サーバーメモリ構成オプション(SQL Server のドキュメントを参照してください)

SQL Server のメモリには、バッファプールと非バッファプール (別名残す記憶または MTL)。の価値max_server_memoryオプションは、バッファキャッシュ、プロシージャキャッシュ、プランキャッシュ、バフ構造、およびその他のキャッシュで構成される SQL Server バッファプールのサイズを決定します。

SQL Server 2012 以降では、min_server_memoryそしてmax_server_memory以下を含むすべてのキャッシュのすべてのメモリ割り当てを考慮しますSQLGENERAL,SQLBUFFERPOOL,SQLQUERYCOMPILE,SQLQUERYPLAN,SQLQUERYEXEC,SQLOPTIMIZER、およびSQLCLR。max_server_memory のメモリー・クラークの完全なリストについては、以下を参照してください。sys.dm_os_memory_clerks(Microsoft SQL Server のドキュメントを参照してください)。

電流を確認するにはmax_server_memory値を入力するには、次のコマンドを使用してください。

$ 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のメモリベース容量は次のように決定されます。

  • サーバーの RAM が 4 GB から 16 GB の間にある場合は、4 GB の RAM ごとに 1 GB を残してください。たとえば、16 GB のサーバーの場合は、4 GB のままにします。

  • サーバー上の RAM が 16 GB を超える場合は、4 GB の RAM につき 1 GB を最大 16 GB にし、RAM 8 GB あたり 1 GB を 16 GB 以上にします。

たとえば、サーバーに 256 GB の RAM が搭載されている場合、計算は次のようになります。

  • OS 用に 1 GB

  • 最大 16 GB のRAM: 16/4 = 4 GB

  • 16 GB を超える残りの RAM: (256-16) /8 = 30

  • 残すメモリの総容量: 1 + 4 + 30 = 35 GB

  • max_server_memory: 256-35 = 221 ギガバイト

初期構成後、通常のワークロード期間中に解放できるメモリを監視して、SQL Serverに割り当てるメモリを増減する必要があるかどうかを判断します。

注記

Windowsはメモリ不足リソース通知を96MBで通知するので、バッファが必要ですが、設定できます使用可能 M256 GB 以上の RAM を搭載した大規模サーバーでは 1 GB を超える必要があります。

詳細については、を参照してください。メモリ管理アーキテクチャガイド(Microsoft SQL Server のドキュメントを参照してください)。