Serverクエリチューニングを実施する際に実行プランやIO、実行時間を確認することが多いかと思いますが、実行時間のうち待機イベントと待機時間を確認する方法の説明です。以下を使用してCPU時間と実行時間を確認することが多いのではないでしょうか。OFFお手軽にCPU時間と実行時間を確認することができますが、実行時間のうちCPU以外の待機はどのようであったか把握できません。拡張イベントwait_comletedを使うSQLServer2014以降から、待機イベントにかかった時間としてwait_completedが追加されており、待機イベントが終了した時にイベント名と経過時間を記録してくれます。各イベントの待機時間の取得している単位以下は丸められてしまっているので、待機事象のミリ秒以下まで正確に把握したい場合があれば、wait_completedではなくwait_infoやwait_info_externalの開始時間と終了時間の差分を算出して合計すべきかもしれません。クエリチューニングをするうえでは細かい数字の積み上げよりも、どの待機イベントで大きく待ちが発生しているか把握する方が大事であるため、気にする必要はないかと。以降で監視するクエリのセッションIDに対し拡張イベントを作成します。そのため事前にセッションIDを調べておく必要があります。@@SPIDもしくはSSMS上のタブからも確認可能です。拡張イベントを作成する事前準備で確認した監視したいセッションIDを指定して拡張イベントを作成します。以下クエリのxxxは、監視したいセッションIDに置換してください。結果を保存するファイルパスも適宜読み替えてください。===============================上記で指定したセッションIDにて確認したいクエリの実行が完了し、拡張イベントによるトレースが完了したら拡張イベントによる監視終了と、拡張イベントを削除します。SERVERGO結果をSQLで確認する場合は、例えば次のようなSQLで集計するとよいでしょう。以下SQLでは待機イベントの待機時間の合計とクエリの構文解析・コンパイル時間、クエリ実行時のCPU時間と実行時間を出力しています。sys.fn_xe_file_target_read_fileのファイルパスは、確認したい結果を保存したパスに適宜読み替えてください。)GOGUIにて確認する際には、出力したファイルをダブルクリックすればSSMSで開くことができます。拡張イベントは表示列を追加することで確認したい列で集計やソートが可能であるため、待機イベントの待機時間の合計や、待機イベントのうち上位のイベントを確認することもできます。待機時間の単位については以下の通り異なりますので要注意です。拡張イベントwait_infoを使うSQLServer2012で同じことをする場合は、wait_completedではなくwait_infoを使うことになるかと思います。基本的な流れは上記同様です。===============================別セッションで監視するクエリが完了したら拡張イベントのセッションを停止します。SERVERGO集計は以下クエリ。)GO以上、クエリの待機イベントの確認方法でした。拡張イベントをSSMS上で確認するときはGUI操作による列追加やフィルタ等が毎回必要となりめんどくさいので、一度上記のようなSQLを作っておくと便利でしょう。拡張イベントで取得した実行プランをSQLで参照できるよう各クエリに追加しました。待機イベントやクエリの実行時間を確認したら、チューニングするために実行プランは確認する必要があるので。Server2016】dm_exec_input_bufferについて月別アーカイブはてなブログをはじめよう!utiowaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。