SQL Serverデッドロックグラフ-テーブル、ページ、または行のロック?


10

デッドロックグラフのロックがテーブル、ページ、または行レベルであるかどうかを解読する方法はありますか?分離レベル(2)を含め、グラフから必要なすべての情報を入手できましたが、これも本当に知りたいと思っています。

助けてくれる人に感謝します!

回答:


13

デッドロックグラフのXMLでは、次のようになります。

<deadlock-list>
  <deadlock victim="...">
    <process-list>
      <process id="..." ... waitresource="X:..."
...

これXは興味深いビットです。興味のある値は次のとおりです。

  • RID 行ID(行レベルのロック)
  • PAG ページレベルロック用
  • OBJECTTABテーブルロックを示す、さらに修飾されている場合があります)

ドキュメントには他にもいくつかの種類がリストされています


おかげで、それは便利です。私のグラフには2つのプロセスがありますが、それらは異なるページを使用しているように見えます。 、それから同じ行で競合することはできませんよね?このクエリでWITH(ROWLOCK)ヒントを使用しているためです。
tuseau

2
プロセス1が2699を保持していて2588を要求し、プロセス2が2588を保持していて2699を要求している場合、デッドロックになります。デッドロックは循環依存関係を意味することに注意してください。
Gaius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.