SQL Server 2012 では [SQL Server:Batch Resp Statistics] というパフォーマンスモニターのカウンタが追加されています。
このカウンタを使用するとインスタンスのクエリの実行時間を俯瞰することができますのでまとめてみたいと思います。
SQL Server 関連のカウンタは SQL Server オブジェクトの使用 に記載されているのですがこのカウンタは説明がないのですよね。
このカウンタを使用すると以下のように ms の時間を範囲として、CPU 利用時間や経過時間の統計を取ることができます。
この情報を見ることで実行にどの程度かかっているクエリが多いのかを把握することができます。
CPU 時間や経過時間が長いクエリはそれだけハードウェア負荷が上がることになりますので、数ミリ秒の範囲が多いことが望ましくなります。
[sys.dm_exec_query_stats] には、[last_worker_time] [last_elapsed_time] というような最後に実行したクエリ実行時の CPU 時間や経過時間を確認することができる項目があります。
この項目と上記のカウンタを組み合わせると、どのようなクエリが該当の範囲に入っているかを確認するための手掛かりになるかと思います。
実際のクエリとしては以下のような形でしょうか。
SELECT |
最後の実行時に CPU 時間と経過時間が 500 ms 以上かかっているクエリを取得するものになります。
稼働中のシステムのカウンタを取得して、どの範囲の時間のクエリが多いかを確認し、それに合わせてクエリの条件を調整することでカウンタが示す範囲のクエリを取得することができるかと。