Wykres zakleszczenia programu SQL Server - blokada tabeli, strony lub wiersza?

10

Czy istnieje sposób na rozszyfrowanie, jeśli blokada na wykresie zakleszczenia jest na poziomie tabeli, strony lub wiersza? Mam wszystkie informacje, których potrzebuję na wykresie, w tym poziom izolacji (2), ale też naprawdę chcę to wiedzieć.

Dziękuję każdemu kto może pomóc!

Tuseau
źródło

Odpowiedzi:

13

Na wykresie XML impasu zobaczysz coś takiego:

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

Jest Xto interesujący bit, możliwe wartości, którymi jesteś zainteresowany:

  • RID dla identyfikatora wiersza (blokowanie na poziomie wiersza)
  • PAG do blokady na poziomie strony
  • OBJECT(który może być dodatkowo kwalifikowany, TABwskazując na blokadę stołu)

Istnieje również kilka innych rodzajów wymienionych w dokumentacji .

Gajusz
źródło
Dzięki, to się przydaje. Chociaż na moim wykresie mam 2 procesy, które wydają się korzystać z różnych stron: waitresource = "RID: 21: 1: 2588: 0" waitresource = "RID: 21: 1: 2699: 1" Więc jeśli używają różnych stron , to nie mogą być sprzeczne w tym samym rzędzie, prawda? Ponieważ używam podpowiedzi Z (ROWLOCK) w tym zapytaniu.
tuseau
2
Jeśli proces 1 utrzymuje 2699 i chce 2588, a proces 2 utrzymuje 2588 i chce 2699, to byłby impas. Pamiętaj, że impas oznacza zależność cykliczną.
Gajusz