web-dev-qa-db-ja.com

SQL Server 100%のCPU使用率-1つのデータベースが他のデータベースより高いCPU使用率を示す

約40の異なるデータベース(それぞれ約1〜5 GB)を備えたSQLサーバーがあります。サーバーは、32ギガバイトのRAMを搭載した8コア2.3G CPUです。 27GigはSQL Serverに固定されています。 CPUの使用率は常にほぼ100%に近く、メモリ消費は約95%です。ここでの問題は、CPUが常に100%に近く、理由を理解しようとしていることです。

- this スクリプトを使用して、どのデータベースが高いCPUに寄与するかを確認するために初期チェックを実行しましたが、実際にCPUを消費しているものを詳細に実証することはできませんでした。 (すべてのDBからの)上位クエリの完了には、約4秒しかかかりません。 IOもボトルネックではありません。

ここで記憶が犯人でしょうか?メモリの分割を確認しましたが、オブジェクトキャッシュはSQL Serverに割り当てられたメモリ(27G)の約80%を占めています。多くのSPが関係しているのであれば、それが正常であることを願っています。プロファイラを実行すると、多くの再コンパイルが表示されますが、主に「一時テーブルの変更」、「遅延コンパイル」などが原因であり、これらの再コンパイルがメモリ不足によりキャッシュからスローされる計画の結果かどうかは不明です

考えを感謝します。

8
Lalman

SSMSでいくつかのレポートを確認できます。

インスタンス名/レポート/標準/トップセッションを右クリックします

トップCPU消費セッションを確認できます。これにより、どのSQLプロセスがリソースを使用しているかが明らかになります。周りを見ると、CPUに関連する他のレポートがいくつかあります。もう少しDMVを指すつもりでしたが、もしあなたがすでにそれを調べていたら、それをスキップします。

sp_BlitzCache を使用して、CPUを最も消費しているクエリを見つけることができます。また、IOおよびその他のものでソートすることもできます。これは、再起動の間に蓄積されるDMV情報を使用しています。

この記事 は有望に見えます。

いくつか stackoverflow Ozar氏からの良さ。

18
Sam

this sqlserverstudymaterialに関する記事;

「%Privileged time」は100%に基づいているわけではないことに注意してください。sqlserver.exeに200が表示され、システムに8 CPUがある場合、sqlserver.exeによって消費されるCPUは800のうち200(のみ) 25%)。

「%Privileged Time」の値が30%を超える場合は、通常、ドライバーまたはウイルス対策ソフトウェアの障害が原因です。このような状況では、BIOSおよびフィルタードライブが最新であることを確認してから、ウイルス対策ソフトウェアを一時的に無効にして、変更を確認してください。

「%User Time」が高い場合は、SQL Serverを消費しているものがあります。 SQL Serverで実行されているプロセスのCPU使用率が高くなる原因となる既知のパターンがいくつかあります。

0
Supriyo