web-dev-qa-db-ja.com

SQL Serverがより多くのサーバーメモリを消費するのはなぜですか?

SQL ServerがサーバーRAMの87.5%を消費しています。これにより、最近、パフォーマンスの低下など、パフォーマンスのボトルネックが多数発生しました。この問題を調査しました。インターネットで見つけることができる一般的な解決策の1つは、SQL Serverの上限を設定することです。これが行われ、多くの改善が得られました。最大メモリ値が設定されていない場合、SQL Serverがリソースを消費し続ける理由を知りたい

37
kombo

SQL Serverは、許可する限り多くのメモリを消費します。デフォルトでは、その数はマシンの数値メモリの100%を含みます。それが、あなたが見ているものを見ている理由です。 SQL Serverに24 GBのメモリを割り当てた場合、SQL Serverは24 GBのメモリを使用するために最善を尽くします。次に、SQL ServerとOSがリソースを争っており、常にパフォーマンスが低下します。

max server memory構成の制限。SQLServerがバッファプールに割り当てることができる量を制限しています(事実上、データページとプロシージャキャッシュを格納する場所)。 SQL Serverには他にもメモリクラークがあるため、特定のバージョン(2008 R2以下)ではmax server memoryはバッファプールを制御するだけです。しかし、これは常に最大のメモリ消費者になるでしょう。

最小および最大サーバーメモリの影響に関するTechNetリファレンス

最小サーバーメモリと最大サーバーメモリの構成オプションは、Microsoft SQL Serverデータベースエンジンのバッファープールで使用されるメモリ量の上限と下限を設定します。

OSにどれだけのメモリを残すべきかという質問に関する限り、これは一般的に議論されている指標です。それは本当にすべてが、主にサーバー上で実行されている他のプロセスに依存します。それが本当に専用のサーバーであるという条件で(そしてそれはほとんど決してそうではありません)。私はOSに少なくとも4 GBのメモリを見たいと思っています(大きなハードウェアボックスではさらにもっと)。ただし、最も重要なのは、使用されていないメモリの量を監視することです。自由に使用し、使用可能なメモリ(perfmonで監視可能)と未使用のメモリ(もちろん、これらの状況に常に小さなバッファを残す)が多いことに気付いている場合は、SQL Serverにより多くのメモリを割り当てます。

49
Thomas Stringer

SQL Serverは、デフォルトでサーバー上のすべてのメモリを使用するように設計されています。これは、SQL ServerがデータベースのデータをRAMにキャッシュするため、ユーザーが毎回ディスクからデータを読み取る必要がある場合よりも速くデータにアクセスできるためです。 SQL Serverがディスクに何度も同じデータを必要とするたびにディスクにアクセスする必要がある場合、IO要件は非常に高くなります。

通常、私は人々にRAM Windowsの場合は約4ギグを残すことをお勧めしますが、それは実際にサーバーで実行されているソフトウェアの量、使用しているSQL Serverのコンポーネントに依存します(すべてのコンポーネントが従うわけではありません)その設定)など.

11
mrdenny

これは、SQLの再起動を必要とせずに即座に機能します。

サーバーメモリサーバー構成オプション

min server memorymax server memoryの2つのサーバーメモリオプションを使用します、SQL ServerのインスタンスのSQL Serverメモリマネージャによって管理されるメモリの量(メガバイト単位)を再構成します。デフォルトでは、SQL Serverは使用可能なシステムリソースに基づいてメモリ要件を動的に変更できます。

固定量のメモリーを構成する手順固定量のメモリーを設定するには、次のようにします。

  1. オブジェクトエクスプローラーでサーバーを右クリックし、[プロパティ]を選択します。
  2. [メモリ]ノードをクリックします。
  3. [サーバーメモリオプション]で、最小サーバーメモリと最大サーバーメモリに必要な容量を入力します。

SQL Serverが使用可能なシステムリソースに基づいてメモリ要件を動的に変更できるようにするには、デフォルト設定を使用します。最小サーバーメモリのデフォルト設定は0で、最大サーバーメモリのデフォルト設定は2147483647メガバイト(MB)です。

これが役に立てば幸いです!

6
Nikita Kosousov

エリックが言ったように、他のプロセスのために空きスペースを保つためにメモリを管理する必要があります。最大メモリの設定方法に関する一般的な説明とガイダンスについては、Jonathan Kehayiasによる投稿を確認してください。

http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/

サーバーの使用状況を考慮して推奨事項を変更できます。

3
RLF

SQL Serverは利用可能なRAMを使用しない限り使用します。原則として、OSに2GB以上の空き容量を残そうとします。つまり、64 GBの物理メモリがある場合RAMホストでは、SQL Serverの上限は62 GB。

http://msdn.Microsoft.com/en-us/library/ms191144(v = sql.105).aspx

1
Eric Higgins