1. ホーム
  2. sql-server

SQL Serverを叩く原因を調べるにはどうしたらいいですか?

2023-08-04 03:09:01

質問

私の SQL Server の CPU は、今日のほとんどの時間、約 90% になっています。

常に使用されているため、再起動できる状態にはありません。

SQL 内の何がこのような CPU オーバーロードを引き起こしているのかを見つけることは可能でしょうか。

SQL Profiler を実行しましたが、非常に多くのことが起こっており、特定の何かが原因であるかどうかを判断するのは困難です。

sp_who2 を実行しましたが、すべてが正確に何を意味するのか、また、ここで考えられる問題を特定することが可能なのか、よくわかりません。

おそらくたくさん使用されているのだろうという回答を先取りするために、これは完全に正常な活動レベルから今日に限って起動しました。

私は、SQL 内で CPU の問題を引き起こしているものを見つける方法を探しています。

どのように解決するのですか?

私はここで、CPU が実際に SQL プロセスによって消費されていることを確認したことをデューディリジェンスと仮定します (perfmon のプロセス カテゴリ カウンターで確認できます)。通常、このようなケースでは、関連するパフォーマンス カウンターのサンプルを取得し、通常の負荷動作条件で確立したベースラインと比較します。この問題を解決したら、将来の比較のために、そのようなベースラインを確立することをお勧めします。

SQL がすべての CPU サイクルを費やしている場所を正確に見つけることができます。しかし、どこを見ればよいかを知るには、多くのノウハウと経験が必要です。SQL は 2005/2008 か 2000 か? 幸いなことに、2005 年とそれ以降については、いくつかの既製のソリューションがあります。John Samsonの回答で、あなたはすでに2つの良いポインタを得ています。私は、以下のものをダウンロードしてインストールすることをお勧めします。 SQL Server パフォーマンス ダッシュボード レポート . これらのレポートには、時間別やI/O別のトップクエリ、最も使用されているデータファイルなどが含まれており、どこに問題があるのかをすぐに把握することができます。数値とグラフの両方で出力されるので、初心者の方にはより便利です。

を使うこともお勧めします。 AdamのWho is Active スクリプトを使うこともお勧めします。

そして最後になりますが、パフォーマンス分析に関する MS SQL Customer Advisory Team のホワイトペーパーをダウンロードして読むことをお勧めします。 SQL 2005 の待ち時間とキュー .

私の推奨は、I/O を見ることです。バッファ プールをゴミ箱に入れるような負荷をサーバーに追加した場合 (つまり、メモリからキャッシュされたデータ ページを退避させるほど多くのデータを必要とする場合)、結果として CPU が大幅に増加します (意外に聞こえるかもしれませんが、事実です)。その原因は、通常、大きなテーブルをエンドツーエンドでスキャンする新しいクエリです。