編集:セッションレポートがブロックされているがPAGELATCH_*
、LCK_M_
関連する待機タイプではなく、で待機しているのはなぜですか?
以前は、SQLサーバーはブロッキングセッションのみをblocking_session_Id列で報告すると想定していました。ブロックされたセッションが論理ロックを待機していて、などのほかのものがなかった場合PAGELATCH_*
。
編集:セッションレポートがブロックされているがPAGELATCH_*
、LCK_M_
関連する待機タイプではなく、で待機しているのはなぜですか?
以前は、SQLサーバーはブロッキングセッションのみをblocking_session_Id列で報告すると想定していました。ブロックされたセッションが論理ロックを待機していて、などのほかのものがなかった場合PAGELATCH_*
。
回答:
以前は、ブロックされたセッションが論理ロックを待機していて、などの他のものは何も待機していない場合、SQL Serverがブロッキングセッションを報告するのは、blocking_session_id列のみであると想定していました
PAGELATCH_*
。
sp_WhoIsActive
SQL Serverの組み込み機能ではなく、Adam Machanicの手順を使用しています。Adamの手順では、ロックのブロックだけでなく、ブロックの「興味深い」原因がすべて報告されます。基本的な情報は、sysprocesses、sys.dm_exec_requests、sys.dm_os_waiting_tasksなどのさまざまなソースから取得されます。
タスクは、ロック以外の他のものを待つことができます。たとえば、ページ上の行の排他ロックを取得できても、排他ページラッチの取得を待機する必要がある場合があります(他のタスクが同じページを互換性のないモードでラッチしたため)。
この例でPAGELATCH_EX
は、wait_infoの末尾の(*)で示されているように、排他的なページラッチはPFS、GAM、SGAM、DCM、またはBCMページではなく、通常のデータまたはインデックスページにあります。
sp_WhoIsActive
ここのドキュメント(ブログエントリ)を見つけることができます。