Blokowanie programu SQL Server w bazie danych ma miejsce, gdy transakcja blokuje zasób i uniemożliwia działanie jednego lub większej liczby połączeń na tym samym zasobie. Drugie połączenie musi czekać na zwolnienie blokady, zanim będzie mogło być kontynuowane. Ma to na celu zapewnienie komponentu izolacji ACID – co oznacza, że równoczesne transakcje nie są dla siebie widoczne, dopóki nie zostaną zakończone. Blokowanie w SQL Server może siać spustoszenie w wydajności w każdym środowisku.
Jednym z zadań wykonywanych przez administratorów baz danych jest zidentyfikowanie zapytania powodującego blokowanie, naprawienie go, a następnie przejście o krok dalej, aby określić główną przyczynę. Zbadanie przyczyny, zwłaszcza po fakcie, może być bardzo trudnym zadaniem. Dla większości oznacza to bardzo czasochłonny proces rootowania za pomocą dynamicznych widoków zarządzania SQL Server, takich jak s ys.dm_exec_requests lub uruchamianie procedur systemowych, takich jak sp_who2 aby poznać szczegóły identyfikatorów procesów systemowych (SPIDS) zaangażowanych w łańcuch bloków. Spotlight Cloud może znacznie zmniejszyć Twoje wysiłki w celu zidentyfikowania tych blokujących zdarzeń.
Korzystanie z monitorowania bazy danych do identyfikacji bloków SQL Server
|
Rysunek 1:Panel informacyjny |
Począwszy od panelu Przegląd, Spotlight Cloud zapewnia przejrzysty widok całego środowiska. Pokazuje metryki, w tym liczbę sesji, procesy, użycie pamięci, zużycie dysków i wszystko na pierwszy rzut oka. Co ważniejsze, wyraźnie pokazuje aktywność blokującą; na środku rysunku 1 widać wyraźnie, że obecnie są dwa zablokowane procesy.
W przypadku administratora DBA zapoznanie się ze szczegółami jest niezbędne do rozwiązania problemów z blokowaniem. Spotlight Cloud daje nam możliwość zagłębienia się w więcej szczegółów sesji, po prostu wybierając menu rozwijane z Przeglądu, jak pokazano na rysunku 2.
Rysunek 2:Lista rozwijana z Przeglądu |
Spotlight Cloud pozwala łatwo zobaczyć, które sesje są blokowane i jakie instrukcje są zaangażowane. Na rysunku 3 widać, że SPID 59 i 65 są zablokowane (oznaczone pomarańczowym podświetleniem wokół stanu), co odpowiada liczbie zablokowanych. Zauważysz również, że Spotlight Cloud nadal podaje podsumowanie szczegółów naszego obecnego stanu instancji, co pozwala nam mieć oko na ważne liczniki podczas zagłębiania się w problemy z wydajnością.
Korzystanie z monitorowania serwera Spotlight Cloud SQL Server do rozwiązywania problemów z blokowaniem
|
Rysunek 3:Panel sesji |
Pulpit nawigacyjny Sesje (jak widać na rysunku 3) dostarcza nam istotnych informacji potrzebnych do rozwiązania problemu. Tutaj możesz znaleźć ważne informacje, takie jak użytkownik uruchamiający wyciągi, baza danych, której dotyczy problem i kiedy sesja została podana. Podana głębia szczegółów pozwala zaoszczędzić czas rzeczywistym tym administratorom baz danych, którzy potrzebują szybkich odpowiedzi na pytanie, co powoduje blokowanie, aby mogli je rozwiązać. Widzisz nie tylko, że masz dwa zablokowane przejścia, ale możemy również zobaczyć, że oba są instrukcjami UPDATE w tej samej tabeli, które są uruchamiane przez konto Usługi sieciowe w bazie danych Sales. Rzeczywiste zestawienie znajduje się w prawym dolnym rogu. Na koniec możemy zobaczyć zarówno aktywny SPID, jak i SPID, przez który jest blokowany.
W prawym górnym rogu rysunku 3, niebieskim tekstem, Spotlight Cloud powie Ci, gdzie masz iść dalej w swoim śledztwie. Produkt w każdej warstwie daje jasną ścieżkę, jak nurkować jeszcze głębiej. Kliknięcie linku Investigate in Workload Analyzer pozwala zobaczyć, co wywołało SPID 61, który jest blokerem potencjalnych klientów dla SPID 65.
|
Rysunek 4:Analizator obciążenia (w tym miejscu chcemy rozwinąć Zablokowane sesje) |
Analizator obciążenia zapewnia szczegółowy wymiar, który umożliwia dotarcie do określonych zasobów, takich jak blokowanie. Na rysunku 4 możesz zobaczyć, jak zagłębiamy się dalej, klikając dwie strzałki rozwijania w rogu sekcji Zablokowane sesje.
Rysunek 5:Szczegóły zablokowanych sesji |
Teraz, gdy znasz już bazę danych, możesz kopać trochę dalej. W lewym panelu nawigacyjnym możesz zagłębić się w bazę danych sprzedaży. Tutaj możesz zobaczyć SPID 61 i 64, w tym aktualny stan. Oba te identyfikatory procesów systemowych są blokowane i zauważ, że SPID 59 jest teraz również blokowany przez SPID 64. Ten widok pomaga zapewnić, że możesz wyprzedzić blokowanie, gdy będziesz kontynuować badanie.
W dolnej połowie rysunku 5 możesz zobaczyć mapowanie zablokowanej sesji, które zawiera szczegóły SPID 61, który w tym przypadku jest naszym głównym blokerem. Winowajcą jest w rzeczywistości część uruchomionego zadania agenta SQL, co ma sens w oparciu o użytkownika, którego znaleźliśmy, uruchamiając instrukcję. Jeśli pamiętasz, było to konto usługi sieciowej, NT AUTHORITY\NETWORK SERVICE. W tym przypadku usługa agenta SQL działa z tym konkretnym zestawem poświadczeń.
Następnym krokiem jest sprawdzenie, jakie zadania są uruchomione i czy możesz zabić zadanie, aby zatrzymać blokowanie. Zwykle można przejść do SQL Server Management Studio, aby przejrzeć agenta SQL i przyjrzeć się zadaniom, ale Spotlight ułatwia to i zapewnia kompleksowy widok zadań. Możesz to znaleźć, klikając strzałkę obok słów „Analizator obciążenia” u góry, tak samo jak podczas przechodzenia z Przeglądu do Sesji.
Rysunek 6:Rozwiń z narzędzia Workload Analyzer |
Zapobieganie przyszłym blokom SQL Server
Badanie blokowania wymaga czasu, a czasami, gdy badamy konkretny problem, blokowanie rozwiązuje się samo. W takim przypadku uruchomione zadanie zostało ukończone, a aktualizacje, które zostały zablokowane, mogły zostać uruchomione. Chociaż bezpośredni problem już nie istnieje, nadal musisz szukać przyczyny źródłowej, aby upewnić się, że możesz temu zapobiec w przyszłości.
Ponieważ już zidentyfikowałeś SPID 61 jako zadanie, które było uruchomione i ponieważ czas minął, musisz teraz spojrzeć na historię. Aby przejrzeć historię, po prostu zmień wyświetlany zakres dat na zakres czasu aktywnego blokowania. Na rysunku 7 możesz zobaczyć zakres dat w prawym rogu, w którym możesz kliknąć menu rozwijane i odpowiednio dostosować czas. Następnie chcesz wyszukać SPID 61 za pomocą funkcji wyszukiwania. Każde środowisko jest inne, więc to, co zrobisz z tymi informacjami, będzie teraz zależeć. To, czy dostosujesz czas zadania, wprowadzisz pewne zmiany w indeksach, kodzie lub konfiguracjach, zależy wyłącznie od Ciebie.
Rysunek 7 Zadania |
Rysunek 8:Długie bloki |
Niektóre bloki po prostu pojawiają się i znikają tak szybko, że nie mają znaczącego wpływu na wydajność. Kiedy trzymają się dłużej, musimy o tym szybko wiedzieć. Spotlight Cloud ma alarm „długo działającej blokady”, który informuje użytkownika o blokach, które nie znikają.
Rysunek 9:Wymiar obiektu zablokowanego |
Blokowanie jest objawem niektórych większych problemów i często potrzeba różnych perspektyw, aby dotrzeć do pierwotnej przyczyny. Wymiar zablokowanego obiektu w analizatorze obciążenia Spotlight Cloud pozwala użytkownikowi szybko ustalić obiekty, które generują najbardziej blokującą aktywność dla danej instancji.
Najtrudniejszą częścią dla administratorów baz danych jest zidentyfikowanie blokowania i zagłębianie się w przyczynę. Spotlight Cloud Professional pozwala nam szybko i sprawnie dotrzeć do tych informacji. Kiedy czas rozwiąże aktywny problem, Spotlight Cloud pozwala nam kontynuować dochodzenie, aby znaleźć pierwotną przyczynę i ostatecznie dostarcza nam informacji potrzebnych do podejmowania świadomych decyzji, jak zapobiegać przyszłym zdarzeniom.
Chcesz zobaczyć Spotlight Cloud w akcji? Rozpocznij bezpłatny 30-dniowy okres próbny już dziś.