48 GBのRAMを搭載したサーバーでSQLサーバーを使用しています。
SQL Serverサービスを開始すると、最初はRAMの12%を使用していますが、24時間後には90%に達し、クエリの実行が遅くなります。サービスを再起動する必要があるため、ユーザーにサービスを提供できます。
何が問題で、どうすれば修正できるでしょうか?
画像の例:
そして(name = 'max degree of parallelism'であるsys.configurationsからvalue_in_useを選択します)
サーバーコアは47です。
システムのwaits statistics
に基づいて、parallelism
の設定が正しくありません。
システムのMaxdop
は16
以下にする必要があります。このMSの記事に基づいて正しい値を見つけることができます。 「並列処理の最大度」構成オプションの推奨事項とガイドライン) SQL Server
これを行ういくつかのT-SQLスクリプトを次に示します(正確なNUMA
構成はわかりませんが、スクリプトはそれを容易にします): SQL ServerのMAXDOP設定アルゴリズム
これは私が同意するMax Vernonによる説明です。彼は、maxdop
の誤った設定が実行速度を低下させる理由を説明しています。
コア/数値ノードの数よりも大きいMAXDOPを設定すると、遠いメモリへの呼び出しが発生し、近くのメモリを呼び出すよりも何倍も遅くなります。これは、各numaノードに独自のメモリがあるためです。クエリで単一のnumaモードに存在するよりも多くのスレッドを使用すると、CPU負荷が複数のコアに分散されるため、複数のメモリノードに分散されます。
SQLは常にRAMそれはデータをキャッシュする必要があります。最小/最大RAMをインスタンスに設定することは常に良いアイデアです(特にMAXいくつか保持しますRAM)dba.SEでこの良い答えを参照してください: SQL Serverがより多くのサーバーメモリを消費する理由
SSMSでインスタンスを右クリック->メモリ->最小/最大メモリを入力します。 SQL専用マシンのOSに少なくとも4 GBを残すことをお勧めします。他のサービスを実行している場合は、それらも念頭に置いてください。
今、あなたはあなたのクエリが遅くなっていると言っています、それは起こるべきではありません。おそらく、特定のクエリに関するパフォーマンスアドバイスを求める別の質問をする必要があります。