SE の雑記

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

クエリ (セッション) 単位で要求されたロックを確認

one comment

SQL Server のクエリの問題を確認する際に、どのようなロックが取得されているかを確認することがあります。

ロックをクエリ (厳密にはセッション単位) で確認したい場合には拡張イベントを使うとわかりやすいと思います。

拡張イベントには、[lock_acquired] というイベントがあり、このイベントの情報を取得することで要求されたロックの情報を取得することができます。
image

拡張イベントではセッション ID でフィルタすることができますので、これで特定のセッションをフィルタリングすることができます。
image

この拡張イベントの情報を表示させると以下のような情報を取得することができます。
image

取得した情報はグループ化もできますので取得されたロックの傾向も簡単に確認できます。
image

SQL Server プロファイラで Lock:Acquired イベント クラス を取得することができますので、こちらからも確認できます。
# RDS for SQL Server では、拡張イベントが使用できないので、プロファイラ経由で取得することになるかと。
プロファイラは SPID でフィルタができますので、こちらからも特定のセッションについてロックを確認することができます。
image

image

ロックの競合の調査などをする場合、クエリ単位でどのようなロックが取得されているかを把握することが重要になってきますので、この辺の取得方法は知っていると便利かと。

Share

Written by Masayuki.Ozawa

1月 18th, 2014 at 9:26 pm

Posted in SQL Server

Tagged with

One Response to 'クエリ (セッション) 単位で要求されたロックを確認'

Subscribe to comments with RSS or TrackBack to 'クエリ (セッション) 単位で要求されたロックを確認'.

  1. 山彦

    19 1月 14 at 14:10

Leave a Reply