SE の雑記

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

SQL Database v12 におけるロック競合の取得

leave a comment

気づいたら SQL Database v12 でも、blocked_process_report によるロック競合が発生したクエリの情報が取得できるようになっていました。

blocked_process_report は 「blocked process threshold (s)」の設定値を超えたロック競合による待機が発生した場合のイベントとなり、SQL Database では、投稿を書いている時点では 20 秒に設定が行われているようです。
# 設定の変更は現状出来なさそうでした。

select * from sys.configurations where name = 'blocked process threshold (s)'

image

実際の情報の取得は、拡張イベントで 「blocked_process_report」のイベントを取得するようにしておけば完了です。

image

今回は ring_buffer として取得していますが、ロック競合により 20 秒以上待機が発生したクエリについては、拡張イベントによるロック競合の情報を取得することができるようになります。

image

SQL Database では RCSI が既定の動作のため、検索系のロック競合の発生は抑えられているはずですが、クエリタイムアウトや、処理が終わらない場合の調査方法の一つとして覚えておくとよいかと。

Share

Written by Masayuki.Ozawa

10月 23rd, 2016 at 9:57 pm

Posted in SQL Database

Tagged with

Leave a Reply