Jak monitorować zakleszczenia

11

Kiedy zaczynasz rozwiązywać problemy z zakleszczeniami programu SQL Server 2005/2008 i jak? Alarm jest włączany w SSMS za pośrednictwem alertu o stanie wydajności programu SQL Server, obiektów-> SQLServer: Blokady, Licznik-> Blokuj oczekiwania / s, Wystąpienie: _ Razem, Alert, jeśli licznik: wzrośnie powyżej wartości 3. Czy jest to proaktywny sposób monitorowania? Jaka jest dopuszczalna wartość? Byłbym bardzo wdzięczny za twoją pomoc. Dziękuję Ci!!!

db7
źródło

Odpowiedzi:

7

Możesz użyć Powiadomień o zdarzeniach, aby otrzymywać powiadomienia za każdym razem, gdy nastąpi zakleszczenie na serwerze:

Widzieć:

Dodatkowe linki:

Sankar Reddy
źródło
3

Najpierw spójrz na wykres impasu i zobacz dokładnie, co się dzieje. Następnie możesz rozważyć opcje, które zwykle sprowadzają się do a) zmodyfikowania aplikacji w celu standaryzacji według kolejności blokowania obiektów (np. Jeśli to możliwe, biorąc pod uwagę logikę aplikacji, zawrzyj z programistami konwencję, aby zawsze blokować tabele w kolejności alfabetycznej) lub b ) sprawdź, czy naprawdę działasz na odpowiednim poziomie izolacji w każdej transakcji.

Gajusz
źródło
Według stackoverflow.com/a/112256/14731 spójna kolejność blokowania nie zapobiega zakleszczeniom.
Gili
3

Wybrałbym automatyczne śledzenie po stronie serwera dwóch głównych problemów:

  • długie zapytania (ustalasz czas trwania, który jest długi dla twojego środowiska)

  • zakleszczenia - sprawdź wykres Zakleszczenie i łańcuch Blokada: Zakleszczenie

Otrzymasz pliki śledzenia każdego dnia i będziesz mógł monitorować akcję - sprawdź, czy jakieś zaplanowane zdarzenie nie powoduje problemów. Więcej informacji na temat profilowania produkcji można znaleźć w tym pytaniu: Korzystanie z SQL Profiler w bazie danych, która jest w produkcji .

Marian
źródło
1

System Center Operations Manager (SCOM) z SQL Server Management Pack może ostrzegać o zakleszczenia Jeśli włączysz zalogowaniu do wiadomości 1205. Można włączyć go z następującej kwerendy SQL: EXEC sp_altermessage 1205, 'WITH_LOG', 'true'.

Zobacz także moją odpowiedź na „Dlaczego nazwa obiektu i nazwa indeksu nie są wypełnione na wykresie zakleszczenia?” dla skryptu PowerShell napisałem, że pobierze informacje o zakleszczeniu z bufora zdarzeń i zapisze wykresy zakleszczenia jako pliki xdl, które można otworzyć w SQL Management Studio 2012 lub nowszym lub przeglądać w notatniku, aby zobaczyć więcej szczegółów.

JamieSee
źródło