SQL Server 교착 상태 그래프-테이블, 페이지 또는 행 잠금?


10

교착 상태 그래프의 잠금이 테이블, 페이지 또는 행 레벨 인 경우 해독 할 수있는 방법이 있습니까? Isolation Level (2)을 포함하여 그래프에서 필요한 모든 정보를 가지고 있지만 실제로도 알고 싶습니다.

도와 줄 수있는 사람에게 감사합니다!

답변:


13

교착 상태 그래프 XML에는 다음과 같은 내용이 표시됩니다.

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

X흥미로운 비트, 당신이에 관심이있는 값입니다 :

  • RID 행 ID의 경우 (행 레벨 잠금)
  • PAG 페이지 레벨 잠금
  • OBJECT( TAB테이블 잠금을 나타내는 추가 규정이있을 수 있음 )

문서에 나와있는 다른 종류 도 있습니다.


고마워, 그것은 유용하다. 내 그래프에는 다른 페이지를 사용하는 것으로 보이는 두 가지 프로세스가 있지만 waitresource = "RID : 21 : 1 : 2588 : 0"waitresource = "RID : 21 : 1 : 2699 : 1"다른 페이지를 사용하는 경우 , 같은 행에서 충돌 할 수 없습니다. 맞습니까? 이 쿼리에 WITH (ROWLOCK) 힌트를 사용하고 있기 때문입니다.
tuseau

2
프로세스 1이 2699를 보유하고 있고 2588을 원하고 프로세스 2가 2588을 보유하고 있고 2699를 원하면 교착 상태가됩니다. 교착 상태는 순환 종속성을 의미합니다.
Gaius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.