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.