| Termin | Definicja |
|---|---|
| SQL Server Activity Monitor | SQL Server Activity Monitor to wbudowane w SSMS narzędzie prezentujące bieżącą aktywność i procesy instancji. Rola Activity Monitor w SQL Server Management StudioSQL Server Activity Monitor jest narzędziem dostępnym w SQL Server Management Studio (SSMS), służącym do obserwowania bieżącej aktywności instancji Microsoft SQL Server. Po otwarciu monitora SSMS pobiera informacje diagnostyczne z serwera i przedstawia je w formie paneli dotyczących obciążenia, uruchomionych procesów, oczekiwań, operacji wejścia i wyjścia oraz kosztownych zapytań. Narzędzie działa jako interfejs obserwacyjny: pokazuje stan środowiska w chwili odświeżenia, ale samo nie optymalizuje zapytań, nie zmienia konfiguracji instancji i nie zastępuje pełnej analizy planów wykonania. Monitor można otworzyć z poziomu Object Explorer po połączeniu z instancją SQL Server. Dostęp do danych zależy od uprawnień konta użytego w SSMS oraz od wersji serwera i klienta. Activity Monitor należy traktować jako pomoc podczas wstępnego rozpoznania problemu, na przykład nagłego wzrostu czasu odpowiedzi, dużej liczby blokad albo wysokiej aktywności dyskowej. Wnioski powinny być odnoszone do normalnego obciążenia konkretnej instancji, ponieważ sama wartość procentowa lub pojedynczy wpis nie przesądza jeszcze o przyczynie awarii. Panele pokazujące obciążenie instancjiW sekcji Overview Activity Monitor prezentuje między innymi wykresy dotyczące procentowego wykorzystania procesora, oczekujących zadań, operacji dyskowych oraz liczby żądań wsadowych. Wysokie użycie CPU może wynikać z kosztownych zapytań, kompilacji planów, pracy usług systemowych albo niewystarczających zasobów hosta. Duża liczba oczekujących zadań wskazuje, że część pracy nie może zostać wykonana natychmiast, ale do określenia przyczyny potrzebny jest typ oczekiwania oraz kontekst obciążenia. Panel Processes pokazuje aktywne sesje i żądania, zwykle z informacjami takimi jak identyfikator procesu serwera SPID, nazwa bazy danych, stan żądania, użytkownik, typ polecenia, czas oczekiwania i tekst wykonywanego zapytania. Szczególne znaczenie ma rozróżnienie sesji wykonującej pracę od sesji oczekującej na blokadę. Proces blokujący może mieć niski poziom użycia CPU, a mimo to zatrzymywać wiele innych żądań. Przy analizie trzeba sprawdzić, czy blokada wynika z otwartej transakcji, długiego zapytania, operacji modyfikującej dane lub nieodpowiedniego poziomu współbieżności. Sekcja Resource Waits grupuje oczekiwania według ich rodzaju, natomiast Data File I/O pokazuje aktywność wejścia i wyjścia dla plików baz danych. Wysokie opóźnienia odczytu lub zapisu mogą wskazywać na przeciążenie podsystemu dyskowego, nieefektywne zapytania albo niewłaściwe rozmieszczenie plików, lecz Activity Monitor nie rozstrzyga samodzielnie, która z tych przyczyn występuje. Dane z wykresów warto porównać z historią obciążenia i pomiarami systemu operacyjnego. Interpretacja kosztownych zapytań i oczekiwańPanele Recent Expensive Queries oraz Active Expensive Queries pomagają znaleźć zapytania, które w określonym momencie zużywają dużo zasobów. W zależności od dostępnych danych można analizować między innymi czas wykonania, użycie procesora, liczbę odczytów logicznych lub fizycznych oraz liczbę wykonań. Zapytanie o dużym łącznym koszcie nie musi być najwolniejsze przy pojedynczym uruchomieniu: całkowite obciążenie może wynikać z częstego wykonywania krótkiej instrukcji. Odwrotnie, sporadyczne zapytanie trwające długo może mieć niewielki udział w całkowitym obciążeniu. Wyniki zależą od mechanizmów zbierania informacji przez SQL Server, między innymi od statystyk przechowywanych w pamięci oraz od dostępności historii zapytań. Po restarcie instancji część danych o aktywności może nie być jeszcze reprezentatywna. Zmiana planu wykonania, aktualizacja statystyk, parametryzacja, różne wartości parametrów i konkurencja o zasoby mogą powodować, że to samo zapytanie zachowuje się odmiennie w różnych chwilach. Dlatego wpis znaleziony w Activity Monitor powinien prowadzić do dalszego sprawdzenia tekstu zapytania, planu wykonania, indeksów, statystyk i typów oczekiwania. Jeżeli panel wskazuje oczekiwanie, nie należy automatycznie kończyć sesji. Zatrzymanie procesu może przerwać transakcję i wywołać wycofywanie zmian, które również przez pewien czas obciąży serwer. Przed użyciem polecenia zakończenia sesji trzeba ustalić właściciela połączenia, znaczenie operacji i zależności blokowania. W praktyce przydatne jest zestawienie danych Activity Monitor z widokami dynamicznego zarządzania, takimi jak sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_waiting_tasks oraz sys.dm_exec_sql_text, ponieważ pozwalają one uzyskać bardziej precyzyjny obraz bieżących żądań. Wykorzystanie monitora podczas diagnostyki SQL ServerActivity Monitor sprawdza się przede wszystkim jako punkt startowy podczas zgłoszenia, że aplikacja korzystająca z SQL Server działa wolno albo nie odpowiada. Najpierw należy odnotować czas wystąpienia problemu, nazwę instancji, obciążoną bazę i rodzaj zauważalnego objawu. Następnie można sprawdzić, czy w tym samym czasie występują blokady, nietypowe oczekiwania, zwiększone użycie CPU, intensywne operacje Data File I/O albo kosztowne zapytania. Taka korelacja jest ważniejsza niż pojedynczy odczyt wykresu, ponieważ chwilowy skok może być normalnym elementem zaplanowanego zadania. Podczas analizy trzeba pamiętać, że Activity Monitor odświeża dane cyklicznie i samo odświeżanie wykonuje zapytania diagnostyczne do instancji. Zbyt krótki interwał odświeżania może zwiększać narzut i utrudniać ocenę sytuacji, zwłaszcza na przeciążonym serwerze. Narzędzie nie zapewnia pełnej historii zdarzeń, nie pokazuje wszystkich zależności aplikacyjnych i nie zastępuje Extended Events, Query Store, liczników wydajności ani analizy dziennika SQL Server. Do trwałego porównywania zmian lepiej użyć mechanizmu, który przechowuje dane w czasie. Jeżeli objaw dotyczy komputera użytkownika, należy oddzielić problem klienta SSMS od problemu samej instancji. Opóźnienie może wynikać z połączenia sieciowego, uwierzytelniania, sterownika, aplikacji wysyłającej zapytania albo z zasobów serwera. Activity Monitor pokazuje stan widziany przez SQL Server, więc nie wyjaśnia bezpośrednio każdego problemu z laptopem lub stacją roboczą. Rzetelna diagnostyka polega na zestawieniu informacji z monitora z czasem trwania żądania, logami aplikacji, planem wykonania i parametrami środowiska, a dopiero potem na doborze działania naprawczego. |