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


36

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


3
SQL ServerのRAMの使用がボトルネックの原因であるとどのように判断しましたか?何が遅い?どちらかといえば、SQL Serverは、可能な限り多くのRAM(または予想以上に多くのRAM)を使用している場合、より効率的である必要があります。また、サーバー上にSQL Serverがメモリを使用しているために(そのように設計されているように)苦しんでいる他のアプリケーションがある場合は、それらを別のサーバーに移動します
アーロンバートランド

私はここでメソッドを使用していますlucidica.com/help/got-sql-eating-up-ramそれが助けたかどうか教えてください:)敬具、ニキータ。
ニキータコソソフ

回答:


48

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

あなたが設定するとmax server memory、設定上限を、あなたは(それがデータページとプロシージャキャッシュを格納し、事実上)バッファー・プールに割り当てることができますどのくらいのSQL Serverの制限されています。SQL Serverには他のメモリ担当者がいるため、特定のバージョン(2008 R2以前)ではmax server memory、バッファープールを制御するだけです。しかし、これは常に最大のメモリコンシューマーになります。

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

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

OSのためにどれだけのメモリを残すべきかという質問に関しては、それは一般的に議論されている測定基準です。それは本当にすべて、主にサーバーで実行されている他のプロセスに依存します。それが真に専用のサーバーである場合(そして、それはほとんどありません)。私が見てみたい、少なくとも 4ギガバイトのOS用のメモリ(と、さらにビッグなハードウェアボックスの上を)。ただし、最も重要なのは、未使用のメモリの量を監視することです。寛大で、使用可能なメモリ(perfmonで監視可能)と未使用のメモリ(もちろん、これらのコーナーの状況では常に小さなバッファを常に残している)に気付いている場合は、SQL Serverにより多くのメモリを与えます。


11

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

通常、Windows用に4ギガバイトのRAMを残すことをお勧めしますが、それはサーバーで実行されているソフトウェアの量、使用しているSQL Serverのコンポーネント(すべてのコンポーネントがその設定に従うわけではありません)などによって異なります。


6

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

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

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

一定量のメモリを設定する手順一定量のメモリを設定するには:

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

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

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



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.