SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2016 CTP 2.0 のライブクエリ統計を使ってみる

leave a comment

SQL Server 2016 CTP 2.0 の SSMS では、クエリ実行時に「ライブクエリ統計」(Live Query Stats : ライブ実行プラン) を使用することができます。
これについては CTP 2.0 の SSMS で SQL Database に接続した際にも使用することができるようです。
詳細は Live Query Statistics を参照していただければと。

この機能は実行しているクエリの実行プランをリアルタイムにどこまで処理がしているかを見ることができる機能となります。
実際には、以下のように土の操作がどこまで完了したのかをリアルタイムに確認することができます。
image
今までの実行プランは実行終了時にプランを表示していましたが、これによりどこまで実行されたのかを確認することが可能です。
ブロッキングについてもどこでブロッキングが行われているかを確認することができます。
たとえば最初のセッションで以下のようなクエリを実行します。

BEGIN TRAN
SELECT * FROM Table_1  WITH(XLOCK) WHERE Col1 = 99984

 
次に別のセッションで以下のクエリを実行します。

SELECT COUNT(*) FROM Table_1 WITH(XLOCK)

 
これによりロック競合のブロッキングが発生しますので、この時にライブクエリ統計を取得するとどこでブロッキングが発生しているかを確認することができます。
この機能が追加されたことで、SSMS の利用状況モニターも拡張がされています。
利用状況モニターの「アクティブなコストの高いクエリ」から「ライブ実行プランの表示」から実行中のクエリについて、ライブ実行プランを表示することも可能です。
image
利用状況モニターからライブ実行プランを表示したい場合は、

  • SET STATISTICS XML ON; or SET STATISTICS PROFILE ON がターゲットのセッションで実行されている
  • query_post_execution_showplan の拡張イベントを有効にできる必要がある

という条件があるため、実行中のクエリのライブ実行プランが取得できるかは、状態を見たいクエリの SET 構文の設定状況に依存する点があるようです。
 
この情報については sys.dm_exec_query_profiles を元にグラフィカルに表示をしているようなので、この DMV が実装されている SQL Server 2014? (SP1 で確認、RTM では駄目かも) / SQL Database v12 でライブクエリ統計が使用できるようです。

Share

Written by Masayuki.Ozawa

5月 30th, 2015 at 2:13 pm

Leave a Reply