Podziel się teraz:
Spis treści ukryć

1. Wstęp

1.1 Co to jest SQL Server Monitor aktywności?

SQL Server Monitor aktywności to wbudowana diagnostykaostnarzędzie ic w środku SQL Server Management Studio wyświetlające informacje o SQL Server procesy i ich wpływ na wydajność serwera. Pozwala śledzić SQL Server procesów, monitoruj oczekiwanie na zasoby, analizuj kosztowne zapytania i obserwuj wzorce wejścia/wyjścia — wszystko z poziomu jednego interfejsu.

SQL Server Activity monitor

1.2 Dlaczego warto używać SQL Server Monitor aktywności?

Monitor aktywności stanowi pierwszą linię obrony podczas rozwiązywania problemów z wydajnością. Zapewnia natychmiastowy wgląd w to, co dzieje się na Twoim komputerze. SQL Server instancji bez konieczności stosowania złożonych zapytań T-SQL lub narzędzi innych firm.

Narzędzie doskonale pomaga szybko identyfikować typowe problemy, takie jak blokowanie sesji, zapytania obciążające procesor, nadmierna liczba wykonywanych zapytań i wąskie gardła wejścia/wyjścia. Gdy użytkownicy zgłaszają, że aplikacja działa wolno lub nie odpowiada, Monitor Aktywności pomaga ustalić, czy winowajcą jest serwer bazy danych.

Dla administratorów baz danych, którzy nie pracują z SQL Server Monitor aktywności oferuje codziennie przystępny punkt dostępu do zrozumienia aktywności serwera. Nawet doświadczeni administratorzy baz danych korzystają z niego jako narzędzia.tarpunkt odniesienia dla badań wydajności.

1.3 Monitor aktywności a inne narzędzia monitorujące

Chociaż Monitor aktywności jest przydatny, ważne jest, aby zrozumieć, jak wypada w porównaniu z innymi opcjami monitorowania:

Monitor aktywności kontra sp_WhoIsActive: Monitor aktywności udostępnia graficzny interfejs z wieloma panelami, natomiast sp_WhoIsActive to kompleksowa procedura składowana, która oferuje bardziej szczegółowe informacje w jednym zestawie wyników. sp_WhoIsActive pokazuje określone typy oczekiwania, które Monitor aktywności grupuje, i zapewnia bardziej szczegółowe informacje o blokowaniu.

Monitor aktywności kontra sp_who2: Tradycyjne polecenie sp_who2 wyświetla podstawowe informacje o sesji, ale Monitor aktywności oferuje więcej możliwości, wyświetlając statystyki oczekiwania, kosztowne zapytania i metryki wejścia/wyjścia w uporządkowanym, wizualnym formacie.

Monitor aktywności a narzędzia innych firm: Komercyjne rozwiązania do monitorowania, takie jak SolarWinds Database Performance Analyzer, oferują śledzenie historii, alerty i zaawansowaną analitykę, których brakuje w Monitorze Aktywności. Monitor Aktywności nie wymaga jednak dodatkowychost lub instalacji.

1.4 Kluczowe korzyści dla administratorów baz danych

Monitor aktywności oferuje szereg zalet, dzięki którym jest niezbędnym narzędziem administratora baz danych:

  • Zero Cost: Jako wbudowany SQL Server Funkcja Management Studio — nie wymaga opłat licencyjnych ani działań wdrożeniowych.
  • Monitorowanie na żywo: Śledź bieżącą aktywność serwera na bieżąco, konfigurowalnie ustalając odstępy odświeżania od 1 sekundy do 1 godziny.
  • Zintegrowane działania: Kliknij prawym przyciskiem myszy procesy, aby zakończyć sesje, wyświetlić szczegóły zapytania lub uruchomić SQL Server Ślady profilera — wszystko z poziomu narzędzia.
  • Wiele perspektyw: Stan serwera można monitorować z różnych perspektyw za pomocą pięciu specjalistycznych paneli, z których każdy koncentruje się na konkretnym aspekcie wydajności.
  • Szybkie rozwiązywanie problemów: Zidentyfikuj most typowe problemy z wydajnością rozwiązują się w ciągu kilku minut, przyspieszając średni czas ich rozwiązania.
  • Niska bariera wejścia: Do efektywnego korzystania z narzędzia nie jest wymagana żadna zaawansowana wiedza, choć głębsza SQL Server Ekspertyza pomaga w interpretacji.

2. Uzyskanie Starz monitorem aktywności

Aby móc efektywnie korzystać z narzędzia Activity Monitor, musisz poznać wymagania wstępne, wymagane uprawnienia i różne metody uruchamiania narzędzia.

2.1 Wymagania wstępne i systemowe

Aby korzystać z SQL Server Monitor aktywności, którego potrzebujesz SQL Server Management Studio (SSMS) zainstalowane na komputerze lokalnym lub serwerze przesiadkowym. Narzędzie Monitor aktywności zostało znacząco przeprojektowane w SQL Server 2008 r., dlatego informacje zawarte w tym przewodniku dotyczą SQL Server Wersje 2008 i nowsze.

Musisz mieć połączenie sieciowe z SQL Server instancja, którą chcesz monitorować. Dla chmury-hostAby uzyskać dostęp do baz danych ed, zazwyczaj potrzebne jest połączenie VPN lub odpowiednio skonfigurowane reguły zapory sieciowej.

Monitor aktywności współpracuje ze wszystkimi wersjami SQL Server, w tym Express, Standard i Enterprise. Samo narzędzie działa na komputerze klienckim w ramach SSMS, więc zasoby serwera są obciążane jedynie przez wykonywane przez niego zapytania monitorujące.

2.2 Wymagane uprawnienia

Odpowiednie uprawnienia są niezbędne do prawidłowego działania Monitora Aktywności. Bez odpowiednich uprawnień ekran może być pusty lub mogą pojawić się błędy odmowy dostępu.

2.2.1 Uprawnienie do wyświetlania stanu serwera

WYŚWIETL STAN SERWERA Uprawnienie jest podstawowym wymogiem korzystania z Monitora Aktywności. To uprawnienie na poziomie serwera umożliwia przeglądanie wszystkich aktywnych procesów i powiązanych z nimi metryk.

Aby przyznać to uprawnienie, administrator serwera może wykonać następujące polecenie:

GRANT VIEW SERVER STATE TO [YourLoginName];

Bez opcji VIEW SERVER STATE Monitor aktywności może się otworzyć, ale w żadnym z jego paneli nie będą wyświetlane żadne dane.

2.2.2 Uprawnienia na poziomie bazy danych

Aby wyświetlić informacje w panelu wejścia/wyjścia pliku danych, potrzebujesz dodatkowych uprawnień. W szczególności musisz posiadać jedną z następujących kombinacji:

  • UTWÓRZ BAZĘ DANYCH pozwolenie lub
  • ZMIEŃ DOWOLNĄ BAZĘ DANYCH pozwolenie lub
  • ZOBACZ DOWOLNĄ DEFINICJĘ pozwolenie

Te uprawnienia muszą być połączone z WYŚWIETL STAN SERWERA aby uzyskać pełną funkcjonalność Monitora aktywności.

2.2.3 Rozwiązywanie problemów z uprawnieniami

Jeśli Monitor aktywności zostanie otwarty, ale nie będzie żadnych danych, uprawnienia sąost Częsta przyczyna. Sprawdź, czy Twoje logowanie ma przyznane uprawnienie VIEW SERVER STATE na poziomie serwera. Możesz zweryfikować swoje uprawnienia, uruchamiając:

SELECT * FROM fn_my_permissions(NULL, 'SERVER');

Poszukaj opcji „WYŚWIETL STAN SERWERA” w kolumnie „permission_name”. Jeśli jej brakuje, skontaktuj się z administratorem bazy danych, aby ją uzyskać.

2.3 Jak otworzyć Monitor aktywności w SSMS

SQL Server Management Studio oferuje cztery różne metody uruchamiania Monitora aktywności, co zapewnia elastyczność w zależności od preferencji dotyczących przepływu pracy.

2.3.1 Metoda 1: Z paska narzędzi

Najszybszym sposobem otwarcia Monitora aktywności jest użycie ikony na pasku narzędzi:

  1. Połącz się ze swoim SQL Server instancja w SQL Server Studio Zarządzania.
  2. Znajdź ikonę Monitora aktywności na standardowym pasku narzędzi (przypomina wykres słupkowy z zielonym przyciskiem odtwarzania).
  3. Kliknij ikonę, aby uruchomić Monitor aktywności.

Start SQL Server Monitor aktywności z ikony paska narzędzi w SQL Server Studio Zarządzania.

Ta metoda jest najszybsza, gdy już pracujesz w programie SSMS i musisz szybko sprawdzić aktywność serwera.

2.3.2 Metoda 2: Z Eksploratora obiektów

Monitor aktywności można również uruchomić bezpośrednio z Eksploratora obiektów:

  1. W Eksploratorze obiektów zlokalizuj SQL Server instancję, którą chcesz monitorować.
  2. Kliknij prawym przyciskiem myszy nazwę instancji.
  3. Wybierz Activity monitor z menu kontekstowego.

Start SQL Server Monitor aktywności, klikając prawym przyciskiem myszy instancję w Eksploratorze obiektów w SQL Server Studio Zarządzania.

Metoda ta jest przydatna podczas łączenia się z wieloma serwerami, gdyż daje pewność, że monitorujesz właściwą instancję.

2.3.3 Metoda 3: Korzystanie ze skrótu klawiaturowego

Dla użytkowników skupiających się na klawiaturze, SQL Server Management Studio udostępnia dedykowany skrót:

  1. Upewnij się, że okno SSMS jest aktywne i że masz połączenie z instancją.
  2. Naciśnij przycisk Ctrl + inny + A.
  3. Monitor aktywności zostanie otwarty dla aktualnie wybranej instancji w Eksploratorze obiektów.

Należy pamiętać, że Monitor aktywności połączy się z dowolną instancją serwera wybraną w Eksploratorze obiektów, dlatego przed użyciem tego skrótu należy upewnić się, że wybrano właściwą instancję.

2.3.4 Metoda 4: Z menu Opcje (StarKonfiguracja tup)

Jeśli często korzystasz z Monitora aktywności, możesz skonfigurować program SSMS tak, aby uruchamiał się automatycznie za każdym razem, gdytarw aplikacji:

  1. In SQL Server Management Studio, przejdź do Narzędzia -> Opcje.
  2. W oknie dialogowym Opcje rozwiń Środowisko, A następnie wybierz Uruchomienie.
  3. Z w starrura lista rozwijana, wybierz Otwórz Eksplorator obiektów i Monitor aktywności.
  4. Wybierz OK.

Ustaw starkonfiguracja tup dla SQL Server Monitor aktywności w SQL Server Studio Zarządzania.

Następnym razem, gdy uruchomisz SSMS i połączysz się z serwerem, Monitor aktywności otworzy się automatycznie obok Eksploratora obiektów.

3. Zrozumienie paneli Monitora aktywności

Monitor aktywności porządkuje informacje w pięciu rozwijanych panelach, z których każdy zapewnia inny wgląd w aktywność serwera. Zrozumienie zawartości każdego panelu jest kluczowe dla skutecznego rozwiązywania problemów.

3.1 Panel przeglądu

Panel Przegląd prezentuje cztery wykresy w czasie rzeczywistym, które umożliwiają szybki podgląd stanu zdrowia SQL Server Te wykresy aktualizują się w konfigurowalnych odstępach czasu i pomagają na pierwszy rzut oka identyfikować nietypowe wzorce.

Panel przeglądu w SQL Server Monitor aktywności.

3.1.1% czasu procesora

Ten wykres pokazuje procent czasu, jaki procesor spędza na wykonywaniu wątków niebędących w stanie bezczynności SQL Server wystąpienie we wszystkich procesorach. Wartość reprezentuje SQL ServerWykorzystanie procesora, a nie całkowite wykorzystanie procesora serwera.

Jeśli stale widzisz zużycie procesora na poziomie 100% lub bliskim 100%, Twój serwer jest obciążony. Może to wskazywać na nieefektywne zapytania, brakujące indeksy lub niewystarczającą wydajność sprzętu. Użyj panelu „Ostatnie kosztowne zapytania”, aby zidentyfikować zapytania, które zużywają zasoby.ost CPU.

3.1.2 Zadania oczekujące

Ta metryka pokazuje liczbę zadań oczekujących na zwolnienie zasobów przed kontynuacją. Zadania mogą czekać na procesor, wejście/wyjście, pamięć lub blokady.

Stale wysoka liczba oczekujących zadań wskazuje na konflikt o zasoby. Panel „Oczekiwanie na zasoby” zawiera więcej szczegółów na temat typów zasobów powodujących oczekiwanie.

3.1.3 Wejście/wyjście bazy danych (MB/s)

Ten wykres przedstawia szybkość przesyłania danych między pamięcią a dyskiem. Łączy on zarówno odczyty, jak i zapisy, mierzone w megabajtach na sekundę.

Skoki w wejściu/wyjściu bazy danych mogą wskazywać na zapytania wykonujące skanowanie dużych tabel, nadmierną aktywność rejestrowania lub operacje na punktach kontrolnych. Panel wejścia/wyjścia pliku danych przedstawia aktywność wejścia/wyjścia według bazy danych i pliku.

3.1.4 Żądania wsadowe/sek.

Ta metryka przedstawia liczbę SQL Server Liczba partii otrzymanych przez instancję na sekundę. Partia może być pojedynczym poleceniem lub wieloma poleceniami przesłanymi razem.

Ta wartość daje pogląd na ogólną aktywność serwera. Nagłe spadki liczby żądań wsadowych w normalnych godzinach pracy mogą wskazywać na problemy z łącznością aplikacji lub problemy z użytkownikami.

3.1.5 Ustawianie interwałów odświeżania

Możesz dostosować częstotliwość aktualizacji danych przez Monitor aktywności:

  1. Kliknij prawym przyciskiem myszy w dowolnym miejscu panelu Przegląd.
  2. Wybierz Częstotliwość odświeżania.
  3. Wybierz interwał spośród predefiniowanych wartości: 1 sekunda, 5 sekund, 10 sekund (domyślnie), 30 sekund, 1 minuta lub 1 godzina.

Ustaw interwał odświeżania w SQL Server Panel przeglądu Monitora aktywności.

Ustawienie interwałów odświeżania poniżej 10 sekund zwiększa obciążenie serwera w zakresie monitorowania. W przypadku systemów produkcyjnych o dużym obciążeniu, rozważ użycie interwałów 30-sekundowych lub dłuższych, aby zminimalizować wpływ na środowisko.

3.2 Panel Procesy

W panelu Procesy wyświetlane są informacje o aktualnie uruchomionych sesjach na Twoim komputerze. SQL Server Ten panel jest niezbędny do identyfikacji, kto co robi i wykrywania problemów blokujących.

Panel Procesy w SQL Server Monitor aktywności.

3.2.1 Zrozumienie informacji o procesie

Każdy wiersz w panelu Procesy reprezentuje aktywną sesję na serwerze. Panel wyświetla sesje ze wszystkich baz danych i wszystkich użytkowników, dając kompleksowy wgląd w aktywność serwera.

Wyświetlane informacje obejmują nazwę logowania, nazwę aplikacji, hostNazwa, baza danych, do której uzyskuje się dostęp, i bieżące polecenie. Pomaga to powiązać aktywność bazy danych z konkretnymi użytkownikami lub aplikacjami.

3.2.2 Wyjaśnienie kluczowych kolumn

Zrozumienie kluczowych kolumn pomoże Ci skutecznie interpretować informacje o procesie:

  • Identyfikator sesji: Unikalny identyfikator dla każdego połączenia. Procesy systemowe używają ujemnych identyfikatorów sesji.
  • Proces użytkownika: Określa, czy jest to sesja użytkownika (Tak), czy proces systemowy (Nie).
  • Zaloguj się: SQL Server login lub konto Windows powiązane z sesją.
  • Baza danych: Bieżący kontekst bazy danych dla sesji.
  • Stan zadania: Pokazuje, co aktualnie dzieje się w sesji (URUCHOMIONA, ZAWIESZONA, UŚPIONA itd.).
  • polecenie: Typ wykonywanego polecenia (SELECT, INSERT, UPDATE itd.).
  • Podanie: Nazwa aplikacji, która utworzyła połączenie.
  • Czas oczekiwania: Jak długo (w milisekundach) sesja czeka na zasoby.
  • Typ oczekiwania: Konkretny typ zasobu, na który czeka sesja.
  • Czas procesora: Całkowity czas procesora wykorzystany przez tę sesję od momentu nawiązania połączenia.
  • Wykorzystanie pamięci: Ilość pamięci (w KB) aktualnie przydzielona sesji.

3.2.3 Procesy filtrowania i sortowania

Panel Procesy zawiera zaawansowane funkcje filtrowania, które pomogą Ci skupić się na odpowiednich sesjach:

  1. Kliknij strzałkę rozwijaną w nagłówku dowolnej kolumny.
  2. Filtr pokazuje dostępne wartości dla danej kolumny, w tym: Wszystkie produkty, Pustei NonBlanks.
  3. Wybierz konkretne wartości, aby wyświetlić tylko te sesje.

Filtruj procesy w SQL Server Monitor aktywności.

Na przykład możesz filtrować Stan zadania aby wyświetlić tylko sesje RUNNING lub filtrować Baza danych aby zobaczyć aktywność w określonej bazie danych.

Możesz również sortować według dowolnej kolumny, klikając jej nagłówek. Kliknij raz, aby sortować rosnąco, dwa razy, aby sortować malejąco.

Posortuj procesy w SQL Server Monitor aktywności.

3.2.4 Identyfikowanie sesji blokujących i zablokowanych

Panel Procesy pomaga zidentyfikować scenariusze blokujące, w których jedna sesja uniemożliwia kontynuację innych:

  • Zablokowane przez: Pokazuje identyfikator sesji blokującej daną sesję. Jeśli ta kolumna zawiera wartość, sesja oczekuje na blokadę utrzymywaną przez inną sesję.
  • Blokada głowy: Wyświetla „1”, jeśli ta sesja blokuje inne, ale sama nie jest zablokowana. Jest to główna przyczyna łańcucha blokowania.

Pokaż blokujące i zablokowane procesy w SQL Server Monitor aktywności.

Aby zbadać problem z blokowaniem, najpierw zidentyfikuj bloker nagłówka (sesję oznaczoną cyfrą „1” w kolumnie Blokada nagłówka), następnie sprawdź, co on robi, i zdecyduj, czy pozwolić mu na dokończenie czynności, czy je zakończyć.

3.2.5 Akcje procesu (zakończenie, szczegóły, śledzenie)

Monitor aktywności umożliwia podejmowanie działań w ramach poszczególnych sesji:

  1. Kliknij prawym przyciskiem myszy dowolną sesję w panelu Procesy.
  2. Zobaczysz kilka opcji:
    • Szczegóły Pokazuje ostatnie polecenie wykonane w tej sesji.
    • Proces zabijania: Kończy sesję (należy stosować ostrożnie).
    • Proces śledzenia w SQL Server profiler: Uruchamia SQL Server Profiler i automatycznie filtruje, aby wyświetlić tylko aktywność z tej sesji.

Wykonaj działania w procesach w SQL Server Monitor aktywności.

Opcja Szczegóły pokazuje tekst polecenia, ale pamiętaj, że to jest trwać Polecenie zostało wykonane — może nie być jeszcze uruchomione. Opcja śledzenia jest szczególnie przydatna, gdy chcesz zobaczyć pełną sekwencję poleceń wykonywanych w sesji.

3.3 Panel Oczekiwania na zasoby

Panel Oczekiwania na zasoby podsumowuje statystyki oczekiwania, pokazując, na jakie typy zasobów czekają sesje most Często. Informacje te są kluczowe dla diagnozowania wąskich gardeł wydajności.

Panel Oczekiwania na zasoby w SQL Server Monitor aktywności.

3.3.1 Zrozumienie statystyk oczekiwania

Kiedy SQL Server Jeśli nie można natychmiast udzielić żądania dotyczącego zasobów (takich jak blokada, czas procesora lub pamięć), zadanie, które je żąda, przechodzi w stan oczekiwania. Statystyki oczekiwania śledzą te okresy oczekiwania i pomagają zrozumieć, kiedy serwer spędza czas na oczekiwaniu, a kiedy na pracy.

Panel „Oczekiwania na zasoby” gromadzi dane z dynamicznych widoków zarządzania systemem, takich jak sys.dm_os_wait_stats i sys.dm_exec_requests. W każdym interwale odświeżania oblicza różnicę między bieżącą a poprzednią migawką, pokazując tempo akumulacji dla każdego typu oczekiwania.

3.3.2 Kategorie oczekiwania

Monitor aktywności grupuje setki indywidualnych typów oczekiwania w szersze kategorie, aby ułatwić interpretację:

  • PROCESOR: Zadania oczekujące na dostępność czasu procesora.
  • Zatrzask buforowy: Oczekuje na obiekty synchronizacji krótkoterminowej, chroniące dostęp do stron danych w pamięci. Ta kategoria obejmuje oczekiwania na zatrzask strony (PAGELATCH_*).
  • Zamek: Oczekiwania spowodowane przez sesje trzymające blokady potrzebne innym sesjom.
  • Pamięć: Oczekuje na przydział pamięci wymagany do takich operacji jak sortowanie i haszowanie.
  • Wejście/wyjście sieciowe: Oczekuje na wysłanie danych do klientów lub odebranie danych od klientów.
  • SQL CLR: Oczekiwania związane z wykonywaniem Common Language Runtime.

Choć takie grupowanie upraszcza widok, jednocześnie zaciemnia ważne szczegóły. Na przykład „Buffer Latch” może grupować oczekiwania PAGELATCH_SH, PAGELATCH_UP i PAGELATCH_EX, które mają różne implikacje dla wydajności.

3.3.3 Interpretacja czasu oczekiwania i zadań oczekiwania

W panelu Oczekiwania na zasoby wyświetlane są dwie kluczowe metryki dla każdej kategorii oczekiwania:

  • Łączny czas oczekiwania (ms): Całkowita liczba milisekund zgromadzonych podczas bieżącego interwału odświeżania dla tej kategorii oczekiwania.
  • Zadania oczekujące: Liczba zadań aktualnie oczekujących na zasoby w tej kategorii.

Wartość czasu oczekiwania jest szczególnie interesująca. Jeśli masz 10-sekundowy interwał odświeżania i widzisz 20 000 ms czasu oczekiwania dla danej kategorii, oznacza to wiele równoczesnych oczekiwań (20 000 ms / 10 000 ms = średnia z 2 równoczesnych oczekiwań w tym interwale).

3.3.4 Identyfikacja wąskich gardeł wydajnościowych

Użyj panelu Oczekiwania na zasoby, aby zidentyfikować, gdzie serwer spędza zasoby.ost czas oczekiwania:

  1. Rozwiń panel Oczekiwania na zasoby.
  2. Zwróć uwagę na kategorie oczekujących, dla których czas oczekiwania jest najdłuższy.
  3. Sortuj według Łączny czas oczekiwania aby zobaczyć, które zasoby są most ograniczony.

Sortuj według łącznego czasu oczekiwania w panelu Oczekiwanie na zasoby, aby znaleźć wąskie gardło wydajności.

Wysokie oczekiwanie na bufor (Buffer Latch) często wskazuje na rywalizację o strony danych w pamięci, co może sugerować wąskie gardła wejścia/wyjścia lub konflikty w bazie danych tempdb. Wysokie oczekiwanie na blokadę (Lock) wskazuje na problemy z blokowaniem. Wysokie oczekiwanie na pamięć (Memory Wait) sugeruje niewystarczające przydziały pamięci dla operacji zapytań.

3.4 Panel wejścia/wyjścia pliku danych

Panel wejścia/wyjścia pliku danych wyświetla aktywność dysku dla każdego pliku bazy danych na serwerze, ułatwiając identyfikację wąskich gardeł wejścia/wyjścia i zrozumienie wzorców wykorzystania dysku.

Panel wejścia/wyjścia pliku danych w SQL Server Monitor aktywności.

3.4.1 Zrozumienie metryk wejścia/wyjścia

Panel wejścia/wyjścia pliku danych wyświetla kilka metryk dla każdego pliku bazy danych:

  • Baza danych: Nazwa bazy danych.
  • Typ pliku: Albo dane (w tym tabele i indeksy), albo dziennik (dziennik transakcji).
  • Nazwa logiczna: Logiczna nazwa pliku zdefiniowana w SQL Server.
  • Odczyt MB/s: Szybkość odczytu danych z tego pliku.
  • MB/sek. Zapisano: Szybkość zapisu danych do tego pliku.
  • Czas reakcji (ms): Średni czas reakcji dla operacji wejścia/wyjścia dla tego pliku.

Te dane odświeżają się w tych samych odstępach co panel Przegląd, zapewniając bieżący wgląd w aktywność dysku.

3.4.2 Identyfikacja wąskich gardeł wejścia/wyjścia

Zwróć uwagę na poniższe wzorce, które wskazują na problemy z wydajnością wejścia/wyjścia:

  • Wysoki czas reakcji: Czasy reakcji stale przekraczające 15-20 ms sugerują wolne podsystemy dyskowe. Czasy reakcji powyżej 50 ms wskazują na poważne wąskie gardła wejścia/wyjścia.
  • Niezrównoważone obciążenie: Jeśli jeden plik danych wykazuje znacznie wyższą szybkość operacji wejścia/wyjścia niż inne pliki w tej samej bazie danych, warto dodać więcej plików, aby rozłożyć obciążenie.
  • Nadmierna aktywność Tempdb: Wysokie wskaźniki wejścia/wyjścia w plikach tempdb często wskazują na zapytania tworzące duże zestawy wyników pośrednich lub wykorzystujące nieefektywne plany wykonania.

3.4.3 Analiza pliku bazy danych

Użyj panelu Wejście/Wyjście pliku danych, aby dowiedzieć się, w jaki sposób bazy danych wykorzystują zasoby dyskowe:

  1. Rozwiń panel Wejście/Wyjście pliku danych.
  2. Sortuj według Odczyt MB/s or MB/s Zapis zidentyfikować most aktywne pliki.
  3. Zwróć uwagę na wszystkie pliki, które cechują się stale dużą aktywnością lub długim czasem reakcji.
  4. Porównaj te informacje z informacjami w panelu Ostatnie kosztowne zapytania, aby zidentyfikować zapytania, które powodują obciążenie wejścia/wyjścia.

Sortuj według odczytu lub zapisu, aby zidentyfikować most aktywne pliki w panelu wejścia/wyjścia pliku danych.

3.5 Panel ostatnich kosztownych zapytań

Panel Ostatnie drogie zapytania jest często najważniejszymost Cenny panel do rozwiązywania problemów z wydajnością aplikacji. Pokazuje zapytania, które zużywają znaczną ilość zasobów serwera, pomagając zidentyfikować możliwości optymalizacji.

Panel Ostatnie drogie zapytania w SQL Server Monitor aktywności.

3.5.1 Zrozumienie metryk zapytań

Monitor aktywności wyświetla kilka metryk dla każdego kosztownego zapytania:

  • Wykonania/min: Ile razy zapytanie zostało wykonane w ciągu ostatniej minuty.
  • Procesor (ms/sek): Czas procesora zużywany przez to zapytanie na sekundę.
  • Odczyty fizyczne/sek.: Liczba odczytów dysku fizycznego na sekundę dla tego zapytania.
  • Zapisy logiczne/sek.: Liczba logicznych zapisów (do pamięci podręcznej bufora) na sekundę.
  • Odczyty logiczne/sek.: Liczba logicznych odczytów (z pamięci podręcznej bufora) na sekundę.
  • Średni czas trwania (ms): Średni czas wykonania tego zapytania.
  • Liczba planów: Liczba planów wykonania w pamięci podręcznej dla tego zapytania.

Te metryki pomagają zrozumieć nie tylko to, które zapytania są kosztowne, ale także dlaczego są drogie i jak często kursują.

3.5.2 Opcje sortowania

Panel Ostatnie kosztowne zapytania można sortować według różnych metryk, aby znaleźć różne typy problemów:

  1. Kliknij nagłówek dowolnej kolumny, aby posortować dane według tej metryki.
  2. Do popularnych strategii sortowania należą:
    • Sortuj według procesora: Znajdź zapytania zużywające most czas procesora.
    • Sortuj według wykonań/min: Zidentyfikuj zapytania, które są wykonywane zbyt często.
    • Sortuj według lektury fizycznej: Znajdź zapytania powodujące most wejścia/wyjścia dysku.
    • Sortuj według średniego czasu trwania: Znajdź długotrwałe zapytania.

Rozwiązując problem z wydajnością, spróbuj posortować dane według wielu kolumn, aby uzyskać różne perspektywy. Prawdziwym problemem może być zapytanie o umiarkowanym obciążeniu procesora, ale z bardzo dużą liczbą wykonań na minutę.

3.5.3 Wyświetlanie tekstu zapytania

Aby zobaczyć faktyczne polecenie SQL stojące za kosztownym zapytaniem:

  1. Kliknij prawym przyciskiem myszy wiersz zapytania w panelu Ostatnie kosztowne zapytania.
  2. Wybierz Edytuj tekst zapytania.
    Edytuj tekst zapytania w panelu Ostatnio wykonane zapytania.
  3. Otworzy się nowe okno zapytania wyświetlające całe polecenie SQL.
    Nowe okno zapytania po wybraniu opcji „Edytuj tekst zapytania” w panelu Ostatnio używane zapytania.

Pozwala to na zbadanie logiki zapytania i zidentyfikowanie potencjalnych możliwości optymalizacji. Następnie można skopiować tekst zapytania w celu przetestowania zmodyfikowanych wersji.

3.5.4 Analiza planów wykonania

Plany wykonania pokazują, jak SQL Server wykonuje zapytanie, ujawniając nieefektywne rozwiązania, takie jak brakujące indeksy lub nieodpowiednie typy połączeń:

  1. Kliknij prawym przyciskiem myszy wiersz zapytania w panelu Ostatnie kosztowne zapytania.
  2. Wybierz Pokaż plan wykonania.
    Pokaż plan wykonania w panelu ostatnich kosztownych zapytań.
  3. SQL Server Management Studio wyświetla graficzną reprezentację sposobu wykonywania zapytania.
    Plan wykonania zapytania w nowym oknie.

Szukaj operacji, które pochłaniają duże procenty zapytania cost, ostrzeżenia o brakujących statystykach lub indeksach oraz nieoczekiwane operacje skanowania tabel. Często wskazują one, na czym należy skupić działania optymalizacyjne.

3.5.5 Identyfikowanie problematycznych zapytań

Zwróć uwagę na te wzorce w panelu Ostatnie kosztowne zapytania:

  • Nadmierne egzekucje: Zapytanie wykonywane tysiące razy na minutę może wskazywać na problem z zapytaniami N+1, w którym kod aplikacji wywołuje bazę danych w pętli.
  • Czytania o wysokiej wartości fizycznej: Zapytania o dużej szybkości odczytu fizycznego często trafiają na dysk, co może wskazywać na brakujące indeksy lub źle napisane zapytania.
  • Wysokie obciążenie procesora przy niskim czasie trwania: Duża liczba szybkich zapytań zużywających łącznie dużo zasobów procesora może mieć równie duży wpływ na wydajność serwera jak kilka powolnych zapytań.
  • Liczba wielu planów: Zapytania z wieloma planami wykonania mogą być obarczone problemami z analizą parametrów lub mogą powodować rozrost pamięci podręcznej planów z powodu zapytań nieparametrycznych.

4. Korzystanie z Monitora aktywności do rozwiązywania problemów z wydajnością

Monitor aktywności naprawdę się sprawdza, gdy używasz go systematycznie do diagnozowania i rozwiązywania problemów z wydajnością. W tej sekcji omówiono typowe scenariusze rozwiązywania problemów i sposoby ich rozwiązywania.

4.1 Diagnozowanie nadmiernej liczby wykonań zapytań

Jeden z nichost częstym problemem związanym z wydajnością jest wykonywanie zapytań znacznie częściej niż jest to konieczne, co często wynika z błędów projektowych aplikacji.

4.1.1 Identyfikowanie powtarzających się zapytań

Aby wykryć zapytania wykonywane zbyt często:

  1. Otwórz Monitor aktywności i rozwiń Ostatnie drogie zapytania szkło.
  2. Sortuj według Wykonania/min (liczba wykonań na minutę).
  3. Szukaj zapytań u góry, których liczba wykonań wydaje się bezpodstawnie wysoka.
  4. Kliknij prawym przyciskiem myszy podejrzane zapytanie i wybierz Edytuj tekst zapytania aby zbadać instrukcję SQL.

Na przykład, jeśli widzisz proste polecenie SELECT wykonywane 37 000 razy na minutę, zastanów się, czy aplikacja naprawdę musi wywoływać to zapytanie tak często.ost zapytania wykonywane częściej niż kilka tysięcy razy na minutę uzasadniają przeprowadzenie dochodzenia.

4.1.2 Analiza przyczyn źródłowych

Nadmierna liczba wykonań zapytań wynika zazwyczaj z następujących problemów:

  • Problem zapytania N+1: Kod aplikacji pobiera listę elementów, a następnie wykonuje osobne zapytanie dla każdego elementu w celu pobrania powiązanych danych. Powoduje to utworzenie N dodatkowych zapytań, gdzie N to liczba elementów.
  • Brak buforowania: Aplikacja wysyła zapytanie do bazy danych o dane, które rardokonuje wyłącznie zmian zamiast buforować je w pamięci aplikacji.
  • Pętle sondowania: Kod wielokrotnie wysyła do bazy danych zapytania sprawdzające zmiany stanu zamiast korzystać z powiadomień o zmianach lub kolejek komunikatów.
  • Nieefektywność ORM: Entity Framework i podobne narzędzia czasami generują nieefektywne wzorce zapytań, gdy programiści nie rozumieją, w jaki sposób ich kod jest tłumaczony na język SQL.

Aby ustalić przyczynę źródłową, prześledź zapytanie do kodu aplikacji. Zwróć uwagę na Zastosowanie i Zaloguj kolumny w panelu Procesy podczas wykonywania zapytania. Możesz również kliknąć proces prawym przyciskiem myszy i wybrać Proces śledzenia w SQL Server Profiler aby zobaczyć wzorzec wywołania.

4.1.3 Rozwiązania i najlepsze praktyki

Po zidentyfikowaniu nadmiernej liczby wykonań zapytań, rozważ następujące rozwiązania:

  • Przetwarzanie wsadowe: Zmodyfikuj kod aplikacji, aby pobrać wiele elementów w jednym zapytaniu, korzystając z połączeń lub klauzul IN, zamiast wykonywać oddzielne zapytania w pętli.
  • Buforowanie wyników: Często używane i rzadko zmieniające się dane w pamięci aplikacji przechowują w pamięci podręcznej z odpowiednimi czasami wygaśnięcia.
  • Chętne ładowanie: Skonfiguruj systemy ORM tak, aby wykorzystywały strategie szybkiego ładowania, które pobierają powiązane dane w mniejszej liczbie bardziej wydajnych zapytań.
  • Parametryzacja zapytania: Upewnij się, że zapytania korzystają z parametrów, a nie łączenia wartości, co usprawni ponowne wykorzystanie pamięci podręcznej planu i zmniejszy obciążenie kompilacji.

4.2 Badanie problemów z blokowaniem

Blokowanie występuje, gdy jedna sesja nakłada blokady, które uniemożliwiają kontynuowanie innych sesji. Objawia się to długim czasem reakcji aplikacji i frustracją użytkowników.

4.2.1 Identyfikacja łańcuchów blokujących

Aby wykryć i przeanalizować blokowanie:

  1. Otwórz Monitor aktywności i rozwiń Procesy szkło.
  2. Szukaj sesji z wartościami w Zablokowany przez kolumna — czekają na blokady utrzymywane przez inne sesje.
  3. Znajdź sesje z „1” w Blokada głowy kolumna — to jest główna przyczyna blokowania łańcuchów.
  4. Zanotuj ID sesji blokera głowy.
  5. Kliknij prawym przyciskiem myszy sesję blokady głowy i wybierz Szczegóły aby zobaczyć, jakie polecenie jest wykonywane.

Zrozumienie łańcucha blokowania jest kluczowe. Blokada główna to sesja, którą należy zbadać, a nie blokowane sesje w dół.

4.2.2 Zrozumienie typów blokad

Typ oczekiwania Kolumna w panelu Procesy wskazuje, na jaki typ blokady oczekują zablokowane sesje:

  • LCK_M_X: Wyłączne oczekiwanie na blokadę, zwykle spowodowane operacjami UPDATE, DELETE lub INSERT.
  • LCK_M_S: Współdzielone oczekiwanie na blokadę, zwykle polecenia SELECT oczekujące na zwolnienie wyłącznych blokad.
  • LCK_M_U: Blokada aktualizacji wait, typ blokady pośredniej używany podczas aktualizacji.
  • LCK_M_IX: Intent exclusive lock wait, wskazujący na rywalizację o blokadę na poziomie strony lub wiersza.

Zasób oczekiwania Kolumna pokazuje, który obiekt bazy danych jest blokowany, co pomaga zrozumieć, która tabela lub indeks jest przedmiotem sporu.

4.2.3 Rozwiązywanie problemów blokujących

Po zidentyfikowaniu sesji blokującej i jej działania masz kilka opcji:

  1. Poczekaj na zakończenie: Jeśli bloker nagłówka uruchamia prawidłowe zapytanie, które wkrótce się zakończy, najlepszym rozwiązaniem może być pozwolenie mu na naturalne zakończenie.
  2. Zakończ sesję: Jeśli bloker nagłówka jest zablokowany lub wykonuje zapytanie, które powinno zostać anulowane:
    • Kliknij prawym przyciskiem myszy sesję w okienku Procesy.
    • Wybierz Zabić proces.
    • Potwierdź czynność w oknie dialogowym.
  3. Optymalizacja zapytań: Jeżeli blokowanie powtarza się przy tych samych zapytaniach, zoptymalizuj je, aby skrócić czas ich blokady.
  4. Dostosuj poziomy izolacji: Należy rozważyć użycie funkcji READ COMMITTED SNAPSHOT ISOLATION w celu zmniejszenia blokowania w obciążeniach wymagających dużej liczby odczytów.
  5. Strojenie indeksu: Dodaj indeksy, aby przyspieszyć zapytania i skrócić czas utrzymywania blokad.

4.3 Analiza wysokiego wykorzystania procesora

Jeśli w panelu Przegląd widać, że czas procesora stale wynosi 100% lub zbliża się do niego, należy zidentyfikować zapytania, które są za to odpowiedzialne, i ustalić, czy można je zoptymalizować.

4.3.1 Identyfikowanie zapytań intensywnie wykorzystujących procesor

Aby znaleźć zapytania zużywające nadmierne zasoby procesora:

  1. Otwórz Ostatnie drogie zapytania szkło.
  2. Sortuj według Procesor (ms/sek) aby wyświetlić zapytania za pomocą most Czas procesora.
  3. Sprawdź najpopularniejsze zapytania na liście.
  4. Kliknij prawym przyciskiem myszy zapytania o wysokim obciążeniu procesora i wybierz Edytuj tekst zapytania aby wyświetlić instrukcję SQL.
  5. Wybierz Pokaż plan wykonania aby zrozumieć jak wykonywane jest zapytanie.

Zwróć uwagę nie tylko na użycie procesora przez poszczególne zapytania, ale także na Wykonania/min kolumna. Zapytanie zużywające umiarkowane obciążenie procesora na wykonanie, ale wykonywane tysiące razy na minutę, może być największym obciążeniem procesora.

4.3.2 Techniki optymalizacji zapytań

Do typowych podejść mających na celu zmniejszenie wykorzystania procesora należą:

  • Dodaj brakujące indeksy: Wyszukiwanie indeksów zużywa znacznie mniej procesora niż skanowanie tabel. Szukaj brakujących rekomendacji indeksów w planach wykonania.
  • Przepisz nieefektywne zapytania: Zastąp kursory operacjami opartymi na zbiorach, wyeliminuj zbędne funkcje w klauzulach WHERE i usuń zbędne połączenia.
  • Aktualizacja statystyk: Nieaktualne statystyki powodują SQL Server wybrać nieefektywne plany wykonania. Uruchom UPDATE STATISTICS dla odpowiednich tabel.
  • Zmniejsz ilość danych: Dodaj klauzule WHERE, aby wcześniej filtrować dane, użyj TOP lub OFFSET/FETCH do paginacji i unikaj SELECT *.
  • Naprawa wykrywania parametrów: Użyj opcji OPTION (RECOMPILE), wskazówek dotyczących zapytań lub przewodników po planach, gdy wykrywanie parametrów powoduje problemy.

4.4 Badanie problemów z pamięcią

Obciążenie pamięci może powodować przenoszenie zapytań na dysk, co znacznie obniża wydajność. Monitor aktywności pomaga identyfikować operacje intensywnie wykorzystujące pamięć.

4.4.1 Zrozumienie metryk pamięci

Wykorzystanie pamięci Kolumna w panelu Procesy pokazuje pamięć przydzieloną każdej sesji w kilobajtach. Wysokie użycie pamięci przez pojedynczą sesję często wskazuje na:

  • Duże operacje sortowania lub haszowania, które nie zmieściły się w początkowo przyznanej pamięci
  • Zapytania pobierające ogromne zestawy wyników
  • Nadmierny paralelizm powodujący tworzenie wielu kopii operatorów planu wykonania
  • Wycieki pamięci w procedurach składowanych lub funkcjach CLR

W panelu Oczekiwania na zasoby może zostać wyświetlona informacja Oczekiwania na pamięć, gdy zapytania nie mogą uzyskać wystarczającej ilości przydzielonej pamięci i muszą czekać na jej dostępność.

4.4.2 Identyfikowanie zapytań intensywnie wykorzystujących pamięć

Aby znaleźć zapytania powodujące obciążenie pamięci:

  1. W Procesy panel, sortuj według Wykorzystanie pamięci aby zobaczyć sesje zużywające most pamięć.
  2. Kliknij prawym przyciskiem myszy sesje z dużym użyciem pamięci i wybierz Szczegóły aby wyświetlić ich zapytania.
  3. W Ostatnie drogie zapytania panel, poszukaj zapytań o wysokim Odczyty logiczne or Logiczne zapisyponieważ często korelują one z wykorzystaniem pamięci.
  4. Przeanalizuj plany wykonania operatorów Sort i Hash Match, które korzystają z przyznanej pamięci.

Zapytania wyświetlające ostrzeżenia „Przyznanie pamięci” w planach wykonania lub ostrzeżenia o nadmiarze pamięci wskazują na problemy z obciążeniem pamięci.

4.5 Wykrywanie problemów z wydajnością aplikacji

Gdy użytkownicy zgłaszają długi czas reakcji aplikacji, Monitor aktywności pomaga ustalić, czy wąskim gardłem jest baza danych.

4.5.1 Korelacja Monitora aktywności z problemami aplikacji

Aby zbadać powolność działania aplikacji:

  1. Zwróć uwagę na dokładną godzinę, o której użytkownicy zgłaszają problemy, oraz na aplikacje, których dotyczą.
  2. Otwórz Monitor aktywności i sprawdź Przegląd panel pokazujący skoki zużycia zasobów w tym czasie.
  3. W Procesy panel, filtruj według Zastosowanie aby wyświetlić tylko połączenia z wybranej aplikacji.
  4. Szukaj wysoko Czas oczekiwania wartości, które wskazują opóźnienia bazy danych.
  5. Sprawdź Ostatnie drogie zapytania panel dla zapytań z tej aplikacji zużywający znaczną ilość zasobów.

Jeśli baza danych nie wykazuje żadnej nietypowej aktywności, a użytkownicy odczuwają spowolnienie, problem najprawdopodobniej leży w kodzie aplikacji, opóźnieniu sieci lub wydajności po stronie klienta.

4.5.2 Identyfikacja nieefektywnych wzorców aplikacji

Monitor aktywności ujawnia kilka antywzorców w projektowaniu aplikacji:

  • Aplikacje czatowe: Wiele małych zapytań zamiast mniejszej liczby, bardziej wydajnych. Rozpoznawane po wysokiej liczbie połączeń i licznych prostych zapytaniach w sekcji Ostatnie Kosztowne Zapytania.
  • N+1 zapytań: Jedno zapytanie, po którym następuje N dodatkowych zapytań o powiązane dane. Wyświetlane jako proste zapytanie z bardzo dużą liczbą wykonań na minutę.
  • Duże zestawy wyników: Aplikacje pobierające znacznie więcej danych niż potrzeba. Szukaj wysokiej Odczyty logiczne w połączeniu z prostymi zapytaniami SELECT *.
  • Brakujące limity czasu: Aplikacje, które nie ustawiają limitów czasu poleceń, mogą pozostawiać połączenia otwarte na czas nieokreślony, widoczne jako długotrwałe sesje w panelu Procesy.

5. Metody alternatywne: pobieranie danych z Monitora aktywności za pomocą języka T-SQL

Chociaż Monitor aktywności udostępnia wygodny interfejs graficzny, czasami zachodzi potrzeba pobrania równoważnych informacji programowo lub utworzenia niestandardowych rozwiązań monitorujących.

5.1 Korzystanie z dynamicznych widoków zarządzania (DMV)

SQL Server udostępnia informacje o aktywności poprzez dynamiczne widoki zarządzania, do których Monitor Aktywności wysyła zapytania w tle.

5.1.1 Kluczowe DMV do monitorowania aktywności

Most Do ważnych DMV służących do replikacji funkcjonalności Monitora aktywności należą:

  • sys.dm_exec_requests: Pokazuje aktualnie wykonywane żądania wraz z informacjami o procesorze, wejściu/wyjściu i oczekiwaniu.
  • sys.dm_exec_sessions: Zawiera informacje na poziomie sesji, takie jak nazwa logowania, host imię i nazwisko oraz nazwę programu.
  • sys.dm_os_wait_stats: Zawiera skumulowane statystyki oczekiwania dla całej instancji.
  • sys.dm_exec_query_stats: Zawiera zbiorcze statystyki wydajności dla zapytań w pamięci podręcznej.
  • sys.dm_io_virtual_file_stats: Zwraca statystyki wejścia/wyjścia dla plików danych i dziennika.
  • sys.dm_exec_sql_text: Pobiera tekst SQL dla danego sql_handle lub plan_handle.
  • sys.dm_exec_plan_zapytania: Zwraca plan wykonania dla zapytania z pamięci podręcznej.

5.1.2 Przykładowe zapytania dotyczące informacji o procesach

Aby odtworzyć funkcjonalność panelu Procesy, możesz wykonać zapytanie:

SELECT 
    s.session_id AS [Session ID],
    CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
    s.login_name AS [Login],
    ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), '') AS [Database],
    ISNULL(t.task_state, '') AS [Task State],
    ISNULL(r.command, '') AS [Command],
    r.cpu_time AS [CPU Time],
    r.total_elapsed_time AS [Elapsed Time],
    r.wait_time AS [Wait Time],
    r.wait_type AS [Wait Type],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

5.1.3 Przykładowe zapytania dotyczące statystyk oczekiwania

Aby zobaczyć statystyki oczekiwania podobne do tych w panelu Oczekiwania na zasoby:

SELECT TOP 10
    wait_type AS [Wait Type],
    wait_time_ms / 1000.0 AS [Wait Time (sec)],
    waiting_tasks_count AS [Waiting Tasks],
    wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
    AND wait_type NOT LIKE '%IDLE%'
    AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;

5.2 Korzystanie z sp_WhoIsActive

sp_WhoIsActive to zaawansowana procedura składowana utworzona przez społeczność, która zapewnia bardziej szczegółowe informacje niż Monitor aktywności w jednym zestawie wyników.

5.2.1 Instalowanie sp_WhoIsActive

Aby zainstalować sp_WhoIsActive:

  1. Pobierz najnowszą wersję z http://whoisactive.com.
  2. Pobrany plik to skrypt SQL zawierający definicję procedury.
  3. Otwórz skrypt w SQL Server Studio Zarządzania.
  4. Połącz się ze swoim SQL Server instancja.
  5. Uruchom skrypt, aby utworzyć procedurę w bazie danych głównej.
  6. Przyznaj uprawnienia do wykonywania odpowiednim użytkownikom.

Ponieważ sp_WhoIsActive jest zainstalowany w bazie głównej, można uzyskać do niego dostęp z poziomu dowolnego kontekstu bazy danych.

5.2.2 Podstawowe przykłady użycia

Najprostszy sposób użycia sp_WhoIsActive jest następujący:

EXEC sp_WhoIsActive;

Zwraca zestaw wyników pokazujący wszystkie aktywne sesje wraz z zapytaniami, typami oczekiwania, informacjami o blokowaniu i wykorzystaniem zasobów.

Przykład 10-sekundowej aktywności w tym okresie:

EXEC sp_WhoIsActive @delta_interval = 10;

Oblicza delty dla metryk, takich jak procesor, i odczytuje, co wydarzyło się w ciągu tych 10 sekund.

5.2.3 Parametry zaawansowane

sp_WhoIsActive obsługuje liczne parametry umożliwiające personalizację:

  • @filtr: Filtruj wyniki według konkretnych sesji, baz danych lub logowań.
  • @filter_type: Określ, do czego ma zastosowanie filtr (sesja, baza danych, logowanie itp.).
  • @get_plans: Uwzględnij plany wykonania w wynikach (ustaw na 1).
  • @get_locks: Pokaż szczegółowe informacje o blokadzie (ustaw na 1).
  • @get_transaction_info: Wyświetl szczegóły transakcji (ustaw na 1).
  • @sort_order: Uporządkuj wyniki według różnych metryk (procesor, odczyty, czas trwania itp.).
  • @destination_table: Wstaw wyniki do tabeli w celu śledzenia danych historycznych.

Przykład pokazujący plany posortowane według procesora:

EXEC sp_WhoIsActive 
    @get_plans = 1,
    @sort_order = '[CPU] DESC';

5.3 Korzystanie z procedur składowanych w systemie

SQL Server zawiera tradycyjne procedury składowane służące do monitorowania aktywności, choć dostarczają one mniej informacji niż DMV czy Monitor aktywności.

5.3.1 sp_who i sp_who2

Procedura sp_who wyświetla podstawowe informacje o sesji:

EXEC sp_who;

Procedura sp_who2 zapewnia nieco więcej szczegółów:

EXEC sp_who2;

Obie procedury pokazują identyfikatory sesji, nazwy logowania, czas procesora i informacje o blokowaniu. Brakuje im jednak bogatych szczegółów dostępnych w DMV lub Monitorze Aktywności.ost przydatne do szybkich kontroli, gdy szybko potrzebujesz minimalnej ilości informacji.

5.3.2 Inne przydatne procedury systemowe

Dodatkowe procedury systemowe służące do monitorowania obejmują:

  • blokada sp: Pokazuje informacje o blokadzie (przestarzałe; zamiast tego użyj sys.dm_tran_locks).
  • sp_monitor: Wyświetla statystyki dotyczące SQL Server aktywności.
  • sp_help: Pokazuje definicje obiektów i metadane.
  • DBCC SQLPERF: Wyświetla statystyki użycia przestrzeni dziennika transakcji i oczekiwania.

5.4 Tworzenie niestandardowych skryptów monitorujących

W przypadku środowisk wymagających szczegółowego monitorowania wykraczającego poza możliwości oferowane przez Activity Monitor, można tworzyć niestandardowe rozwiązania przy użyciu DMV.

5.4.1 Kompletny skrypt równoważny monitorowi aktywności

Oto kompleksowy skrypt, który replikuje most Funkcjonalność Monitora Aktywności:

-- Processes Information
SELECT 
    s.session_id AS [Session ID],
    CONVERT(CHAR(1), s.is_user_process) AS [User Process],
    s.login_name AS [Login],
    ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
    CASE 
        WHEN r2.session_id IS NOT NULL 
        AND (r.blocking_session_id = 0 OR r.session_id IS NULL) 
        THEN '1' 
        ELSE '' 
    END AS [Head Blocker],
    ISNULL(DB_NAME(r.database_id), N'') AS [Database],
    ISNULL(t.task_state, N'') AS [Task State],
    ISNULL(r.command, N'') AS [Command],
    SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
        ((CASE r.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE r.statement_end_offset 
        END - r.statement_start_offset) / 2) + 1) AS [Statement],
    st.text AS [Command Text],
    r.cpu_time AS [CPU Time (ms)],
    r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
    r.wait_time AS [Wait Time (ms)],
    r.wait_type AS [Wait Type],
    r.wait_resource AS [Wait Resource],
    s.memory_usage * 8 AS [Memory Use (KB)],
    s.host_name AS [Host Name],
    c.client_net_address AS [Net Address],
    s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id 
    AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;

-- Recent Expensive Queries
SELECT TOP 20
    qs.execution_count / 
        DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
    qs.total_worker_time / 1000 AS [CPU Time (ms)],
    qs.total_physical_reads AS [Physical Reads],
    qs.total_logical_writes AS [Logical Writes],
    qs.total_logical_reads AS [Logical Reads],
    qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset 
        END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;

5.4.2 Automatyzacja monitorowania za pomocą zadań agenta SQL

Możesz zaplanować niestandardowe skrypty monitorujące za pomocą SQL Server Agent:

  1. Utwórz tabelę do przechowywania wyników monitorowania.
  2. Zmodyfikuj skrypt monitorujący, aby wstawiać wyniki do tej tabeli.
  3. In SQL Server Management Studio, rozwiń SQL Server Agent w Eksploratorze obiektów.
  4. Kliknij prawym przyciskiem myszy Oferty pracy na której: Nowa praca.
  5. Skonfiguruj zadanie tak, aby skrypt monitorujący był uruchamiany w regularnych odstępach czasu.
  6. Skonfiguruj alerty i raporty na podstawie zebranych danych.

Dzięki temu podejściu możliwe jest śledzenie historii i analiza trendów, czego nie oferuje Activity Monitor.

6. Ograniczenia i uwagi dotyczące monitora aktywności

Chociaż Monitor Aktywności jest cenny, zrozumienie jego ograniczeń pomoże Ci korzystać z niego prawidłowo i w razie potrzeby uzupełniać go innymi narzędziami.

6.1 Zrozumienie nagłówka Monitora aktywności

Monitor aktywności nie jest darmowy – wykorzystuje zasoby serwera do zbierania i wyświetlania informacji. Zrozumienie tego obciążenia pomoże Ci korzystać z niego odpowiedzialnie.

6.1.1 Wpływ na zasoby serwera

Monitor aktywności uruchamia zapytania do tabel DMV systemu przy każdym odświeżeniu. Zapytania te obciążają procesor, generują odczyty logiczne i mogą chwilowo utrzymywać blokady na tabelach systemowych. Na obciążonych serwerach to obciążenie może wpływać na wydajność.

Panele „Procesy” i „Ostatnie kosztowne zapytania” są szczególnie kosztowne, ponieważ muszą skanować potencjalnie duże tabele DMV i tabele pamięci podręcznej. Na serwerach z tysiącami buforowanych planów zapytań odświeżanie „Ostatnie kosztowne zapytania” może zająć kilka sekund.

Dokumentacja firmy Microsoft ostrzega, że ​​interwały odświeżania krótsze niż 10 sekund mogą zauważalnie wpłynąć na wydajność serwera, zwłaszcza w przypadku systemów, które są już obciążone.

6.1.2 Najlepsze praktyki dotyczące interwału odświeżania

Wybierz interwały odświeżania odpowiednie dla Twojej sytuacji:

  • 1-5 sekundy: Tylko do natychmiastowego rozwiązywania krytycznych problemów na serwerach o niskim obciążeniu. Nie pozostawiaj Monitora Aktywności uruchomionego w tych odstępach czasu.
  • 10 sekund (domyślnie): Rozsądne dla most scenariusze rozwiązywania problemów i ogólne monitorowanie.
  • 30-60 sekundy: Lepszy wybór dla serwerów produkcyjnych pracujących pod dużym obciążeniem lub w przypadku monitorowania przez dłuższy czas.
  • Tylko odświeżanie ręczne: Na sytuacje, gdy chcesz od czasu do czasu sprawdzić aktualny stan, bez konieczności ciągłego sondowania.

Zawsze zamykaj Monitor Aktywności po zakończeniu sprawdzania. Nie pozostawiaj go uruchomionego bez przerwy, zwłaszcza w wielu instancjach należących do różnych użytkowników.

6.2 Problemy z grupowaniem typu oczekiwania

Podejście Monitora aktywności do kategoryzacji oczekiwań, mimo uproszczenia widoku, może zaciemniać ważne diagnozyostinformacje ic.

6.2.1 Jak grupy monitorujące aktywność czekają

SQL Server Monitor aktywności śledzi setki różnych typów oczekiwania, z których każdy wskazuje na konkretny zasób lub stan. Monitor aktywności grupuje je w szerokie kategorie, takie jak „Zatrzask bufora”, „Blokada” i „Pamięć”.

Na przykład kategoria „Buffer Latch” obejmuje PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX i kilka innych specyficznych typów oczekiwania. Chociaż wszystkie są związane z dostępem do stron, mają różne przyczyny i rozwiązania.

Firma Microsoft nie dokumentuje dokładnie, które typy oczekiwania odpowiadają którym kategoriom, przez co trudno zrozumieć, co tak naprawdę widzisz.

6.2.2 Brakujące typy oczekiwania

Monitor aktywności nie pokazuje wszystkich typów oczekiwania. Most Co ciekawe, często pomija on oczekiwanie na CXPACKET, które wskazuje na równoległe wykonywanie zapytań. Oczekiwanie na CXPACKET jest powszechne i zazwyczaj nie stanowi problemu, ale świadomość jego obecności pomaga zrozumieć charakterystykę obciążenia.

Gdy Monitor aktywności pokazuje „Buffer Latch” jako najwyższy poziom oczekiwania, a inne narzędzia pokazują dominujący poziom CXPACKET, rozbieżność ta wynika z logiki filtrowania i grupowania Monitora aktywności.

6.2.3 Dlaczego konkretne typy oczekiwania są ważne

Znajomość konkretnego typu oczekiwania ma znaczenie przy rozwiązywaniu problemów:

  • PAGELATCH_EX: Często wskazuje to na konflikt tempdb na stronach alokacji. Rozwiązaniem jest dodanie większej liczby plików danych tempdb.
  • PAGELATCH_SH: Może to wskazywać na gorące strony w tabelach użytkowników. Rozwiązaniem jest partycjonowanie lub reorganizacja indeksu.
  • PAGELATCH_UP: Częste podczas aktualizacji. Może wskazywać na normalne działanie, a nie na problem.

Monitor aktywności grupuje wszystkie te elementy w ramach „Zatrzasku bufora”, co utrudnia diagnostykę. Narzędzia takie jak sp_WhoIsActive i zapytania DMV pokazują konkretne typy oczekiwania.

6.3 Dokładność i aktualność danych

Monitor aktywności zapewnia podgląd niemal w czasie rzeczywistym, ale słowo „blisko” jest tu kluczowe. Zrozumienie metody gromadzenia danych pomaga w prawidłowej interpretacji wyników.

6.3.1 Migawka a monitorowanie ciągłe

Monitor aktywności wyświetla migawki z poszczególnych punktów w czasie, wykonywane w każdym interwale odświeżania. Zdarzenia występujące między migawkami nie są rejestrowane. Jeśli zapytanie działa przez 2 sekundy, a odświeżasz dane co 10 sekund, możesz je zobaczyć raz lub wcale, w zależności od czasu.

Oznacza to, że Monitor aktywności doskonale radzi sobie z wyszukiwaniem uporczywych problemów (blokady trwające wiele minut, stale wysokie obciążenie procesora), ale może pomijać problemy przejściowe (krótkie blokady, sporadyczne skoki natężenia zapytań).

6.3.2 Agregacja i próbkowanie

Panel Ostatnie kosztowne zapytania pokazuje dane zagregowane od momentu wprowadzenia planów zapytań do pamięci podręcznej. Dwa identyczne zapytania z różnymi wartościami parametrów pojawiają się jako jeden wiersz, jeśli korzystają z tego samego planu. Ta agregacja może maskować problemy z określonymi kombinacjami parametrów (problemy z analizą parametrów).

Panel „Oczekiwania na zasoby” oblicza stawki poprzez porównanie migawek. Jeśli statystyki oczekiwania zostaną zresetowane między migawkami (rar(ale możliwe), obliczone stawki mogą być nieprawidłowe.

6.4 Kiedy NIE należy używać Monitora aktywności

Monitor aktywności nie jest odpowiedni do każdego scenariusza monitorowania. Rozpoznaj, kiedy alternatywne narzędzia są lepszym wyborem.

6.4.1 Wymagania dotyczące analizy historycznej

Monitor Aktywności pokazuje tylko bieżącą lub ostatnią aktywność. Nie przechowuje danych historycznych. Jeśli potrzebujesz analizować trendy na przestrzeni dni lub tygodni, porównywać bieżącą wydajność z danymi bazowymi lub generować raporty dotyczące wzorców wydajności, Monitor Aktywności nie jest wystarczający.

Do analizy historycznej użyj SQL ServerWbudowany panel wydajności, rozszerzone zdarzenia z plikiem tarpobiera lub korzysta z rozwiązań monitorujących innych firm.

6.4.2 Potrzeby szczegółowych statystyk oczekiwania

Gdy potrzebujesz precyzyjnych informacji o typie oczekiwania do zaawansowanego dostrajania, grupowanie i filtrowanie Monitora Aktywności okazuje się niewystarczające. Zamiast tego użyj zapytań DMV bezpośrednio lub sp_WhoIsActive.

Aby przeprowadzić kompleksową analizę statystyk oczekiwania, należy bezpośrednio zapytać sys.dm_os_wait_stats i ręcznie odfiltrować niegroźne oczekiwania.

6.4.3 Zagadnienia dotyczące serwera produkcyjnego

Na serwerach produkcyjnych pod dużym obciążeniem, obciążenie Monitora Aktywności może być problematyczne. Wielu administratorów baz danych nie powinno uruchamiać Monitora Aktywności jednocześnie na tym samym serwerze.

W przypadku monitorowania produkcji należy rozważyć lżejsze alternatywy, takie jak zaplanowane migawki DMV przechowywane w bazie danych monitorowania lub użyć routingu typu „Read-Only” do monitorowania replik drugorzędnych w konfiguracjach Always On.

7. Najlepsze praktyki korzystania z Monitora aktywności

Stosowanie się do najlepszych praktyk gwarantuje maksymalne wykorzystanie możliwości narzędzia Activity Monitor przy jednoczesnym ograniczeniu negatywnego wpływu na serwery.

7.1 Kiedy używać Monitora aktywności

Monitor aktywności sprawdza się w konkretnych scenariuszach. Używaj go, gdy jego mocne strony odpowiadają Twoim potrzebom.

7.1.1 Problemy z wydajnością w czasie rzeczywistym

Monitor aktywności jest idealny, gdy użytkownicy napotykają problemy i trzeba je natychmiast zdiagnozować. Widok w czasie rzeczywistym pozwala zobaczyć, co dzieje się w danej chwili.

Gdy otrzymasz komunikat, że „aplikacja działa wolno”, otwarcie Monitora aktywności powinno być jednym z pierwszych kroków. Możesz szybko sprawdzić, czy baza danych jest zajęta, zablokowana lub bezczynna.

7.1.2 Badanie spowolnienia aplikacji

Gdy konkretna aplikacja przestaje odpowiadać, Monitor Aktywności pomaga ustalić, czy przyczyną są problemy z bazą danych. Filtruj panel Procesy według nazwy aplikacji, aby wyświetlić tylko aktywność bazy danych tej aplikacji.

Jeśli aplikacja nie wykazuje aktywności w bazie danych, podczas gdy użytkownicy zgłaszają problemy, problem leży gdzie indziej w stosie. Jeśli widzisz rozległe blokowanie lub kosztowne zapytania, znalazłeś winowajcę.

7.1.3 Szybkie kontrole stanu zdrowia

Monitor Aktywności to doskonały panel do szybkich kontroli stanu podczas rutynowej administracji. Otwórz go, spójrz na wykresy Przegląd i upewnij się, że nic nie wygląda nieprawidłowo.

Ta pobieżna kontrola zajmuje sekundy i może ujawnić problemy, zanim staną się poważne. Niech stanie się częścią Twojej codziennej rutyny.

7.2 Optymalne ustawienia konfiguracji

Odpowiednia konfiguracja Monitora aktywności zwiększa jego użyteczność i ogranicza zużycie zasobów.

7.2.1 Zalecane interwały odświeżania

Dopasuj częstotliwość odświeżania do swojego celu:

  • Aktywne rozwiązywanie problemów: 10 sekund zapewnia dobrą reakcję przy rozsądnym obciążeniu.
  • Rozszerzony monitoring: 30–60 sekund zmniejsza obciążenie serwera podczas dłuższych okresów obserwacji.
  • Diagnoza problemu krytycznego: 5 sekund zapewnia dużą szczegółowość, gdy liczy się każda sekunda, ale należy ich używać krótko.
  • Regularne kontrole zdrowia: Odświeżanie ręczne (co godzinę), gdy nie oglądasz aktywnie.

Pamiętaj, aby zamknąć Monitor Aktywności po zakończeniu. Ustawienie długiego interwału i zapomnienie o nim marnuje zasoby serwera.

7.2.2 Strategie filtrowania

Użyj filtrów, aby skupić się na istotnych informacjach i zmniejszyć obciążenie poznawcze:

  • Filtruj procesy według Baza danych aby zobaczyć aktywność tylko w odniesieniu do określonych baz danych.
  • Filtruj według Zaloguj aby śledzić aktywność konkretnego użytkownika.
  • Filtruj według Stan zadania = RUNNING, aby ukryć bezczynne sesje.
  • Filtruj według Zastosowanie aby odizolować ruch z określonych programów.
  • Pokaż tylko pola NonBlanks w Zablokowany przez aby zobaczyć tylko sytuacje blokujące.

7.2.3 Wybór i sortowanie kolumn

Opracuj systematyczne podejście do przeglądania danych Monitora Aktywności:

  1. Starz przeglądem: Sprawdź wykresy pod kątem oczywistych skoków lub anomalii.
  2. Sprawdź procesy pod kątem blokowania: Sortuj według identyfikatora sesji, a następnie poszukaj wartości Zablokowane przez.
  3. Przeglądanie zasobów oczekujących: Sortuj według łącznego czasu oczekiwania, aby zidentyfikować wąskie gardła zasobów.
  4. Analizuj kosztowne zapytania: Sortuj według różnych metryk (procesor, wykonania, odczyty), aby znaleźć różne typy problemów.
  5. Sprawdź za pomocą panelu I/O: Sprawdź, czy zapytania intensywnie wykorzystujące wejście/wyjście korelują z dużą aktywnością dysku.

7.3 Integracja z innymi narzędziami

Monitor aktywności najlepiej sprawdza się jako część większego zestawu narzędzi, a nie jako samodzielne rozwiązanie.

7.3.1 Korzystanie z SQL Server Profiler

Monitor aktywności i SQL Server Profilery dobrze się uzupełniają. Gdy zidentyfikujesz problematyczną sesję w Monitorze aktywności, kliknij ją prawym przyciskiem myszy i wybierz Proces śledzenia w SQL Server Profiler.

Spowoduje to uruchomienie Profilera z filtrami skonfigurowanymi do przechwytywania tylko aktywności danej sesji. Zobaczysz pełną sekwencję wykonanych poleceń, informacje o czasie i komunikaty o błędach – szczegóły, których Monitor Aktywności nie udostępnia.

Aby dowiedzieć się więcej na temat SQL Server Możliwości profilera i zaawansowane techniki śledzenia można znaleźć w naszym wszechstronny SQL Server Przewodnik po profilerze.

7.3.2 Uzupełnianie wydarzeniami rozszerzonymi

Funkcja Extended Events oferuje szczegółowe monitorowanie z niskim obciążeniem, które wychwytuje informacje pomijane przez Activity Monitor. Twórz sesje Extended Events, aby śledzić określone zdarzenia, takie jak blokady, długotrwałe zapytania czy nadmierne rekompilacje.

Użyj Monitora Aktywności do natychmiastowego badania, a Rozszerzonych Zdarzeń do bieżącego monitorowania i analizy danych historycznych. Te dwa narzędzia odpowiadają na różne potrzeby.

Aby dowiedzieć się więcej na temat SQL Server Rozszerzone możliwości zdarzeń i zaawansowane techniki monitorowania, zobacz nasze wszechstronny SQL Server Rozszerzony przewodnik po wydarzeniach.

7.3.3 Rozwiązania monitorujące innych firm

Narzędzia komercyjne, takie jak SolarWinds Database Performance Analyzer, Redgate SQL Monitor i Quest Spotlight, zapewniają funkcje, których brakuje w Monitorze aktywności: alerty, trendy historyczne, planowanie pojemności i automatyczną diagnostykęostIC.

Te narzędzia stanowią cenne uzupełnienie Monitora Aktywności, a nie jego zamiennik. Monitor Aktywności pozostaje użyteczny do szybkich kontroli i analiz, nawet gdy dostępne są zaawansowane narzędzia monitorujące.

7.4 typowych błędów, których należy unikać

Zrozumienie typowych błędów w Monitorze Aktywności pomoże Ci korzystać z niego efektywniej.

7.4.1 Pozostawianie Monitora aktywności działającego w sposób ciągły

Most Częstym błędem jest otwieranie Monitora aktywności i pozostawianie go włączonego w nieskończoność. To marnuje zasoby serwera i przynosi niewiele korzyści, ponieważ nie obserwujesz go aktywnie.

Zamknij Monitor Aktywności, gdy nie używasz go aktywnie. Jeśli potrzebujesz ciągłego monitorowania, wdróż odpowiednie rozwiązanie z zaplanowanym zbieraniem danych.

7.4.2 Nadmierne poleganie wyłącznie na Monitorze aktywności

Monitor aktywności zapewnia jeden z punktów widzenia stanu serwera. Nie polegaj wyłącznie na nim. Uzupełnij go Monitorem wydajności systemu Windows, aby uzyskać metryki na poziomie systemu operacyjnego, Rozszerzonymi zdarzeniami do szczegółowego śledzenia oraz analizą planu wykonania w celu dostrajania zapytań.

Monitor aktywności pomaga identyfikować problemy, ale ich rozwiązanie często wymaga dodatkowych narzędzi i głębszej analizy.

Dowiedz się więcej o: SQL Server monitor wydajności w naszym kompletny przewodnik.

7.4.3 Ignorowanie trendów historycznych

Monitor aktywności pokazuje aktualny stan, ale problemy z wydajnością często wykazują wzorce widoczne dopiero w dłuższej perspektywie. Wdróż zbieranie danych historycznych, aby móc porównywać bieżące wskaźniki z danymi bazowymi i identyfikować trendy.

Bez kontekstu historycznego możesz nie zauważyć, że dzisiejsze „normalne” użycie procesora jest o 30% wyższe niż w zeszłym miesiącu, co wskazuje na stopniową degradację.

8. Rozwiązywanie problemów z Monitorem aktywności

Monitor aktywności sam w sobie czasami napotyka problemy. Wiedza o tym, jak je rozwiązać, pozwala uniknąć frustracji.

8.1 Monitor aktywności nie otwiera się lub nie wyświetla danych

Jeśli Monitor aktywności otwiera się, ale pokazuje puste panele lub w ogóle się nie otwiera, przyczyną może być kilka czynników.

8.1.1 Problemy z uprawnieniami

Most Częstą przyczyną problemów z Monitorem Aktywności są niewystarczające uprawnienia. Aby to sprawdzić i rozwiązać:

  1. Sprawdź uprawnienia na poziomie serwera:
    SELECT * FROM fn_my_permissions(NULL, 'SERVER')
    WHERE permission_name = 'VIEW SERVER STATE';
    
  2. Jeśli nie zwrócono żadnych wierszy, nie masz uprawnienia do wyświetlania stanu serwera.
  3. Poproś administratora serwera o udzielenie:
    USE master;
    GRANT VIEW SERVER STATE TO [YourLogin];
    
  4. Zamknij Monitor aktywności i ponownie otwórz po udzieleniu uprawnień.

8.1.2 Problemy ze zgodnością wersji

Korzystanie ze starej wersji SQL Server Management Studio do połączenia z nowszym SQL Server Wersja może powodować awarie Monitora Aktywności. Narzędzie może nie rozumieć nowych typów oczekiwania lub kolumn widoku systemowego.

Zawsze używaj wersji SSMS, która jest zgodna z Twoją lub nowsza SQL Server wersja. Firma Microsoft udostępnia najnowszą wersję SSMS do bezpłatnego pobrania oddzielnie SQL Server sama.

8.1.3 Problemy z zaporą sieciową i siecią

Monitor aktywności wymaga połączenia z SQL Server instancja na standardowych portach (domyślnie 1433). Jeśli możesz połączyć się przez Eksplorator obiektów, ale Monitor aktywności nie działa, reguły zapory mogą blokować określone połączenia.

Sprawdź, czy Twój klient może się z Tobą skontaktować SQL Server Podłącz komputer do wszystkich niezbędnych portów. Sprawdź zaporę systemu Windows i wszelkie zapory sieciowe między klientem a serwerem.

8.2 Monitor aktywności trwale wstrzymany

Częsty problem, szczególnie w SQL Server 2019, Monitor aktywności jest wstrzymany i nie można go wznowić.

8.2.1 Zrozumienie stanu wstrzymania

Gdy Monitor Aktywności się zatrzyma, wszystkie panele wyświetlają status „Wstrzymano” z przyciskiem wznawiania, który może nie działać. Uniemożliwia to śledzenie aktywności serwera.

Stan wstrzymania występuje zwykle z powodu problemów z uprawnieniami, ograniczeń połączenia zdalnego lub błędów wersji programu SSMS, a nie w wyniku celowego wstrzymania.

8.2.2 Najczęstsze przyczyny

Monitor aktywności może przejść w stan trwałego wstrzymania z powodu:

  • Brak uprawnienia WYŚWIETL STANU SERWERA w nowszych panelach dodanych ostatnio SQL Server Wersje
  • Połączenia zdalne wyłączone na SQL Server przykład
  • Niepowodzenia uwierzytelniania dla określonych zapytań systemowych
  • Błędy w określonych kompilacjach SSMS, szczególnie w wersjach od 18.0 do 18.3
  • Problemy z łącznością między klientem a serwerem

8.2.3 Kroki rozwiązania

Aby rozwiązać problemy ze wstrzymanym działaniem Monitora aktywności:

  1. Aktualizacja SSMS: Pobierz i zainstaluj najnowszą SQL Server Wersja Management Studio ze strony internetowej Microsoftu. Wiele błędów związanych z wstrzymanym stanem zostało naprawionych w późniejszych wersjach.
  2. Sprawdź uprawnienia: Upewnij się, że masz uprawnienia WYŚWIETLANIE STANU SERWERA i WYŚWIETLANIE DOWOLNEJ DEFINICJI.
  3. Sprawdź połączenia zdalne: Sprawdź, czy SQL Server instancja umożliwia połączenia zdalne:
    EXEC sp_configure 'remote access';
    

    Jeśli wartość wynosi 0, poproś administratora o jej włączenie.

  4. Restart SSMS: Czasami wystarczy po prostu zamknąć wszystkie okna itarting SQL Server Management Studio rozwiązuje ten problem.
  5. Połącz się przy użyciu uwierzytelniania systemu Windows: Jeśli używasz uwierzytelniania SQL, wypróbuj uwierzytelnianie systemu Windows, ponieważ czasami pozwala ono ominąć problemy z zatrzymywaniem się uwierzytelniania.

8.3 Problemy z wydajnością podczas korzystania z Monitora aktywności

Jeśli Monitor aktywności staje się wolniejszy lub powoduje pogorszenie wydajności serwera, konieczna jest regulacja.

8.3.1 Zmniejszanie obciążenia monitorowania

Aby zminimalizować wpływ Monitora aktywności:

  1. Zwiększ interwał odświeżania do 30 sekund lub 1 minuty.
  2. Zamknij panele, których aktualnie nie używasz, klikając przycisk Zwiń.
  3. Gdy panele są zwinięte, Monitor aktywności nie wysyła do nich zapytań o dane.
  4. Unikaj jednoczesnego uruchamiania wielu instancji Monitora aktywności.
  5. Zamknij Monitor aktywności całkowicie, jeśli nie badasz aktywnie problemów.

8.3.2 Alternatywne, lekkie metody monitorowania

Jeśli Monitor aktywności wymaga zbyt wielu zasobów w Twoim środowisku, rozważ alternatywy:

  • Zapytaj bezpośrednio w urzędach komunikacji (DMV): Twórz konkretne zapytania T-SQL, które pobiorą tylko te informacje, których potrzebujesz.
  • Użyj sp_WhoIsActive: Ta składowana procedura jest wysoce zoptymalizowana i zwykle ma mniejsze obciążenie niż Monitor aktywności.
  • Wdrożenie próbkowania: Zaplanuj zadania agenta SQL, które będą wykonywać migawki danych DMV w regularnych odstępach czasu i zapisywać wyniki w tabelach w celu późniejszej analizy.
  • Monitoruj repliki wtórne: In Grupy dostępności Always On, uruchom Monitor aktywności na podstawie czytelnego pliku pomocniczego, a nie głównego.

8.4 Niedokładne lub brakujące informacje

Czasami Monitor aktywności wyświetla informacje, które wydają się nieprawidłowe lub niekompletne.

8.4.1 Weryfikacja danych w urzędach komunikacji (DMV)

Gdy wyniki Monitora Aktywności wydają się podejrzane, zweryfikuj je, wysyłając zapytanie bezpośrednio do bazowych DMV. Na przykład, jeśli panel Procesy nie wyświetla blokowania, ale użytkownicy zgłaszają je, wykonaj zapytanie:

SELECT 
    blocking_session_id,
    session_id,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;

Jeśli zapytanie wskazuje na blokowanie, którego Monitor aktywności nie zauważył, potwierdzasz problem z wyświetlaniem.

8.4.2 Zrozumienie czasu odświeżania danych

Pamiętaj, że Monitor Aktywności wyświetla migawki. Zapytanie, które zostało wykonane między interwałami odświeżania, nie pojawi się w sekcji Ostatnie Kosztowne Zapytania, chyba że jego plan wykonania pozostanie w pamięci podręcznej.

Podobnie statystyki oczekiwania w panelu Oczekiwania na zasoby odzwierciedlają akumulację od ostatniej migawki. Szybko zmieniające się obciążenia mogą wykazywać różne wzorce przy każdym odświeżeniu.

9. Zaawansowane techniki monitorowania aktywności

Doświadczeni administratorzy baz danych wykorzystują Monitor aktywności w zaawansowany sposób, aby uzyskać maksymalną diagnostykęostwartość ic.

9.1 Łączenie wielu paneli w celu analizy przyczyn źródłowych

Prawdziwa moc Monitora Aktywności ujawnia się, gdy zestawisz informacje z wielu paneli, aby zrozumieć złożone problemy dotyczące wydajności.

9.1.1 Korelacja oczekiwania z procesami

Jeśli w panelu Oczekiwania na zasoby widoczny jest długi czas oczekiwania w danej kategorii, użyj panelu Procesy, aby zidentyfikować sesje, w których występują te oczekiwania:

  1. Należy zwrócić uwagę na kategorię oczekiwania charakteryzującą się długim skumulowanym czasem oczekiwania (np. „Blokada”).
  2. Przejdź do panelu Procesy.
  3. Sortuj według Typ oczekiwania grupowanie sesji według czasu oczekiwania.
  4. Szukaj sesji, w których typy oczekiwania mieszczą się w problematycznej kategorii.
  5. W przypadku tych sesji sprawdź Zasób oczekiwania kolumna, aby zobaczyć, które obiekty bazy danych są zaangażowane.
  6. Kliknij prawym przyciskiem myszy i wybierz Szczegóły aby zobaczyć tekst zapytania.

Taka korelacja pozwala przejść od stanu „mamy oczekujące blokady” do stanu „to konkretne zapytanie oczekuje na blokady w tej tabeli”.

9.1.2 Łączenie kosztownych zapytań z problemami wejścia/wyjścia

Gdy panel wejścia/wyjścia pliku danych wskazuje na dużą aktywność dysku w określonej bazie danych:

  1. Zwróć uwagę, które pliki bazy danych mają dużą szybkość odczytu lub zapisu wynoszącą MB/s.
  2. Przejdź do ostatnich kosztownych zapytań.
  3. Sortuj według Odczyty fizyczne/sek. do identyfikacji zapytań intensywnie odczytujących dane z dysku.
  4. Filtruj lub wizualnie identyfikuj zapytania skierowane do bazy danych z dużym obciążeniem wejścia/wyjścia.
  5. Sprawdź plany wykonania tych zapytań pod kątem skanowania tabel lub brakujących indeksów, które mogą powodować nadmierne wykonywanie operacji wejścia/wyjścia.

Ta wielopanelowa analiza łączy objawy (wysokie obciążenie dysku) z przyczynami (konkretne nieefektywne zapytania).

9.2 Korzystanie z Monitora aktywności do planowania pojemności

Chociaż Monitor aktywności nie przechowuje danych historycznych, można go wykorzystać strategicznie do obserwacji planowania przepustowości.

9.2.1 Identyfikacja wzorców szczytowego wykorzystania

Monitoruj aktywność serwera o różnych porach dnia, aby zidentyfikować wzorce użytkowania:

  1. Otwórz Monitor aktywności w godzinach szczytu.
  2. Zwróć uwagę na wartości szczytowe na wykresie % czasu procesora.
  3. Zarejestruj maksymalną liczbę zadań oczekujących.
  4. Obserwuj liczbę żądań zbiorczych na sekundę w godzinach szczytu.
  5. Udokumentuj najbardziej obciążone bazy danych w panelu Procesy.
  6. Powtórz poza godzinami szczytu, dla porównania.

Jeśli czas procesora w godzinach szczytu stale przekracza 80%, zbliżasz się do limitu wydajności procesora. Analogicznie, rosnąca liczba oczekujących wskazuje na rosnącą konkurencje o zasoby.

9.2.2 Analiza trendów zasobów

Chociaż Monitor aktywności pokazuje aktualny stan, można go używać do doraźnej kontroli trendów, rejestrując kluczowe wskaźniki na przestrzeni czasu:

  • Wykonuj zrzuty ekranu panelu Przegląd o tej samej porze każdego dnia
  • Zapisz wartości szczytowe z każdego wykresu
  • Porównuj wyniki tydzień po tygodniu, aby zidentyfikować trendy wzrostu
  • Zwróć uwagę na stopniowe zwiększanie średniego czasu procesora lub szybkości wejścia/wyjścia

Niniejszy podręcznik trendów stanowi uzupełnienie bardziej zaawansowanych rozwiązań monitorowania i pomaga uzasadnić rozbudowę wydajności.

9.3 Dokumentowanie bazowych poziomów wydajności

Ustalenie bazowych wskaźników wydajności pomaga rozpoznać moment, w którym wydajność się pogarsza.

9.3.1 Rejestrowanie metryk bazowych

W okresach, w których wydajność jest znana, dokumentuj metryki Monitora aktywności:

  1. Otwórz Monitor aktywności w trakcie normalnego funkcjonowania firmy (nie w godzinach szczytu ani poza szczytem).
  2. Wartości panelu Przegląd rekordów:
    • Typowy zakres czasu procesora %
    • Średnia liczba zadań oczekujących
    • Normalna szybkość wejścia/wyjścia bazy danych
    • Typowe żądania wsadowe/sek.
  3. Kategorie panelu Oczekiwania na zasoby, które pokazują most czas oczekiwania.
  4. Udokumentuj liczbę aktywnych procesów, zwykle w panelu Procesy.
  5. Rejestruj reprezentatywne metryki wykonania zapytań z ostatnich kosztownych zapytań.

Zachowaj tę dokumentację bazową, aby móc się do niej odwołać w przyszłości podczas badania problemów z wydajnością.

9.3.2 Porównanie bieżącej i bazowej wydajności

W przypadku wystąpienia problemów z wydajnością należy porównać bieżące odczyty Monitora aktywności z udokumentowaną wartością bazową:

  • Czy czas procesora jest znacznie dłuższy niż bazowy? Skup się na zapytaniach intensywnie wykorzystujących procesor.
  • Czy zadania oczekujące są 2-3 razy dłuższe niż poziom bazowy? Zbadaj oczekiwanie zasobów.
  • Czy I/O jest znacznie wyższe? Sprawdź panel I/O pliku danych i kosztowne zapytania.
  • Czy liczba żądań zbiorczych jest niższa niż bazowa w godzinach szczytu? Sprawdź, czy nie występują problemy z blokowaniem lub łącznością.

Dzięki temu porównaniu możesz zidentyfikować zmiany i odpowiednio ukierunkować działania naprawcze.

9.4 Tworzenie niestandardowych przepływów pracy monitorowania

Opracuj systematyczne przepływy pracy dla typowych scenariuszy dochodzeń, aby zapewnić dokładną, powtarzalną analizę.

9.4.1 Proces dochodzenia krok po kroku

Gdy użytkownicy zgłaszają problemy z wydajnością, należy postępować zgodnie ze spójnym procesem:

  1. Szybka kontrola stanu zdrowia: Otwórz Monitor aktywności i przejrzyj wykresy panelu Przegląd w poszukiwaniu oczywistych anomalii.
  2. Sprawdź, czy nie ma blokad: Rozwiń panel Procesy, przefiltruj według Niepustych w kolumnie Zablokowane przez.
  3. Zidentyfikuj konflikt dotyczący zasobów: Przejrzyj panel Oczekiwania na zasoby posortowany według czasu oczekiwania.
  4. Znajdź kosztowne zapytania: Przeglądaj ostatnie kosztowne zapytania posortowane według procesora, następnie wykonań, a na końcu odczytów.
  5. Powiąż wzorce wejścia/wyjścia: Odnośniki krzyżowe kosztownych zapytań do aktywności panelu wejścia/wyjścia pliku danych.
  6. Wyniki dokumentu: Rób zrzuty ekranu i zapisuj istotne identyfikatory sesji, typy oczekiwania i szczegóły zapytań.
  7. Głębokie nurkowanie: Użyj śladów Profilera, analizy planu wykonania i zapytań DMV do szczegółowego badania zidentyfikowanych problemów.

9.4.2 Kryteria eskalacji

Ustal kryteria, które pozwolą ustalić, kiedy należy eskalować sprawę, a kiedy kontynuować dochodzenie:

  • Natychmiast eskaluj: Łańcuchy blokujące trwające >5 minut, czas procesora na poziomie 100% przez >2 minuty, krytyczne procesy systemowe wykazujące stan ZAWIESZENIA.
  • Eskaluj za pomocą analizy: Powtarzające się, kosztowne zapytania wykorzystujące >50% mocy procesora, stale wysokie czasy reakcji wejścia/wyjścia >50 ms, powtarzające się niepowodzenia przydziału pamięci.
  • Zbadaj to dokładniej: Temporaroczekiwania rozwiązywane w ciągu kilku minut, zapytania z nieoptymalnymi planami, ale akceptowalną wydajnością, niewielkie blokowanie trwające <30 sekund.

10. Monitor aktywności w różnych SQL Server wersje

Monitor aktywności ewoluował w SQL Server wersje, z których każda przynosi udoskonalenia i okazjonalnie nowe problemy.

10.1 Monitor aktywności w SQL Server 2008 i później

SQL Server W 2008 roku wprowadzono nowoczesny projekt Monitora Aktywności, który do dziś pozostał w dużej mierze niezmieniony.

10.1.1 Nowe funkcje wprowadzone w SQL Server 2008

SQL Server Nowa wersja Monitora aktywności z 2008 r. przyniosła znaczące udoskonalenia:

  • Graficzny panel z wykresami w czasie rzeczywistym w panelu Przegląd
  • Rozwijany/zwijany interfejs panelu zastępujący stary widok wyłącznie siatki
  • Panel Ostatnie kosztowne zapytania pokazujący zbiorcze dane dotyczące wydajności zapytań
  • Panel wejścia/wyjścia pliku danych do monitorowania aktywności dysku dla poszczególnych plików
  • Ulepszony panel Oczekiwania na zasoby z kategoryzacją oczekiwań
  • Menu kontekstowe dostępne po kliknięciu prawym przyciskiem myszy, umożliwiające wykonywanie czynności procesowych, takich jak zamykanie sesji i uruchamianie Profilera
  • Konfigurowalne interwały odświeżania od 1 sekundy do 1 godziny

Zmiany te przekształciły Activity Monitor z prostej listy procesów w kompleksowy panel monitorujący.

10.1.2 Zmiany w stosunku do SQL Server 2005

SQL Server Monitor aktywności z 2005 r. był znacznie bardziej ograniczony:

  • Dostęp do folderu Zarządzanie w Eksploratorze obiektów, a nie do paska narzędzi
  • Pojedyncza siatka pokazująca listę procesów z podstawowymi informacjami
  • Brak wykresów graficznych i wielu paneli
  • Brak kosztownych zapytań i monitorowania wejścia/wyjścia
  • Informacje o ograniczonych statystykach oczekiwania

Nowy projekt z 2008 r. stanowił raczej całkowitą zmianę wyglądu niż stopniową poprawę.

10.2 Monitor aktywności w SQL Server 2014/2016

SQL Server W latach 2014 i 2016 wprowadzono stopniowe udoskonalenia w gromadzeniu danych bazowych Monitora aktywności, ale niewiele zmian wizualnych.

10.2.1 Ulepszenia i ulepszenia

Kluczowe udoskonalenia w tych wersjach obejmowały:

  • Lepsza wydajność podczas monitorowania serwerów z tysiącami planów w pamięci podręcznej
  • Ulepszone możliwości filtrowania w panelu Procesy
  • Poprawiona dokładność agregacji statystyk oczekiwania
  • Lepsze zarządzanie sortowaniem i filtrowaniem kolumn w przypadku dużych zestawów wyników
  • Bardziej wydajne zapytania DMV redukujące obciążenie monitorowania

Główny interfejs pozostał spójny z SQL Server 2008, utrzymywanie znajomości dla administratorów.

10.3 Monitor aktywności w SQL Server 2019/2022

Ostatnie SQL Server kolejne wersje kontynuują ewolucję Activity Monitora, kładąc nacisk na wydajność i stabilność.

10.3.1 Najnowsze funkcje i możliwości

SQL Server Monitor aktywności w latach 2019 i 2022 obejmuje:

  • W tych wersjach wprowadzono obsługę nowych typów oczekiwania
  • Poprawiona wydajność renderowania w SSMS przy użyciu technologii WPF
  • Lepsze zarządzanie dużą liczbą aktywnych sesji
  • Lepsza zgodność z platformami SQL w chmurze
  • Dokładniejsze metryki procesora i wejścia/wyjścia

10.3.2 Znane problemy w najnowszych wersjach

SQL Server W 2019 roku pojawiło się kilka błędów w Monitorze aktywności:

  • Stan trwałego wstrzymania: Monitor aktywności często przechodzi w stan wstrzymania i nie można go wznowić, szczególnie w wersjach SSMS 18.0-18.3. Naprawiono w późniejszych wersjach SSMS.
  • Błędy połączenia zdalnego: Niektóre konfiguracje uniemożliwiają otwarcie Monitora aktywności na zdalnych instancjach. Obejścia obejmują włączenie określonych flag śledzenia lub użycie nowszych kompilacji SSMS.
  • Problemy z uprawnieniami: Nowe widoki systemowe wymagają dodatkowych uprawnień, które nie są jasno udokumentowane, przez co wyświetlacze są puste nawet przy włączonej opcji VIEW SERVER STATE.

Podczas pracy z programem SSMS należy zawsze używać najnowszej wersji SQL Server 2019 i 2022, aby uniknąć tych problemów.

11. Praktyczne przypadki użycia i przykłady

Przykłady z życia wzięte pokazują, jak skutecznie stosować Monitor aktywności w typowych sytuacjach rozwiązywania problemów.

11.1 Studium przypadku: Diagnozowanie powolnej aplikacji internetowej

Zespół programistów zgłasza, że ​​ich aplikacja internetowa stała się niedopuszczalnie powolna – ładowanie stron trwa 20–30 sekund zamiast standardowych 2–3 sekund.

11.1.1 Wstępne badanie z panelem przeglądu

Otwórz Monitor aktywności i sprawdź panel Przegląd:

  1. Wykres % czasu procesora pokazuje użycie procesora na poziomie 85–95%, co jest wartością znacznie wyższą od normalnego poziomu bazowego wynoszącego 30–40%.
  2. Liczba zadań oczekujących waha się między 10–20, w porównaniu do normalnej wartości bazowej wynoszącej 0–3.
  3. Operacje wejścia/wyjścia bazy danych wykazują umiarkowaną aktywność na poziomie około 50 MB/s.
  4. Liczba żądań zbiorczych na sekundę jest niższa od oczekiwanej i wynosi 100 na sekundę, w porównaniu do typowych 300–400 na sekundę w godzinach pracy.

Ten wzorzec sugeruje wąskie gardło procesora z konfliktem zasobów, co powoduje spadek przepustowości. Serwer intensywnie pracuje, ale nie przetwarza wielu żądań.

11.1.2 Identyfikacja problematycznego zapytania

Rozwiń panel Ostatnie kosztowne zapytania i posortuj według liczby wykonań/min:

  1. Najwyższe zapytanie pokazuje 15 000 wykonań na minutę.
  2. Kliknij prawym przyciskiem myszy i wybierz Edytuj tekst zapytania aby zbadać zapytanie.
  3. Zapytanie jest prostym poleceniem SELECT pobierającym pojedynczy rekord użytkownika: SELECT * FROM Users WHERE UserId = @UserId.
  4. Przy normalnym użytkowaniu aplikacji zapytanie to nie powinno być wykonywane 15 000 razy na minutę.

Kliknij prawym przyciskiem myszy zapytanie i wybierz Pokaż plan wykonaniaPlan pokazuje skanowanie tabeli Users z ostrzeżeniem o brakującym indeksie w kolumnie UserId.

Filtruj panel Procesy według Aplikacji, aby wyświetlić tylko połączenia aplikacji internetowej. Wiele sesji pokazuje, że to samo zapytanie jest uruchamiane wielokrotnie.

11.1.3 Rozwiązanie i weryfikacja

Problem wynika z dwóch kwestii: nadmiernej liczby wykonanych zapytań i brakującego indeksu. Kroki rozwiązania:

  1. Utwórz brakujący indeks:
    CREATE NONCLUSTERED INDEX IX_Users_UserId 
    ON Users (UserId);
    
  2. Skontaktuj się z zespołem programistów o nadmiernej liczbie wykonań. Dochodzenie ujawnia problem z zapytaniami N+1 w kodzie aplikacji, gdzie pętla pobiera dane użytkownika dla każdego elementu na liście.
  3. Modyfikuj aplikację grupowanie wyszukiwań użytkownika w pojedyncze zapytanie przy użyciu klauzuli IN lub parametru z wartościami tabelarycznymi.
  4. Sprawdź poprawkę poprzez monitorowanie Monitora Aktywności po wdrożeniu. Wykorzystanie procesora spada do 35-40%, liczba wykonań na minutę spada do 200-300, a czas reakcji aplikacji wraca do normy.

11.2 Studium przypadku: rozwiązywanie problemu blokującego

Użytkownicy zgłaszają, że system składania zamówień okresowo zawiesza się na 30–60 sekund, po czym wraca do normalnego działania.

11.2.1 Wykrywanie łańcucha blokującego

Otwórz Monitor aktywności podczas jednego z tych zdarzeń zawieszonych i rozwiń panel Procesy:

  1. Sortuj według ID sesji aby zobaczyć wszystkie zorganizowane sesje.
  2. Wiele sesji pokazuje wartości w Zablokowany przez kolumna, wszystkie wskazujące na sesję o identyfikatorze 73.
  3. Sesja 73 pokazuje „1” w Blokada głowy kolumna, potwierdzając, że jest to przyczyna źródłowa.
  4. Typ oczekiwania w przypadku zablokowanych sesji wyświetla się LCK_M_X, co oznacza, że ​​sesja oczekuje na wyłączną blokadę.
  5. Zasób oczekiwania Kolumna ujawnia, że ​​blokowanie znajduje się w tabeli Zamówienia.

11.2.2 Analiza przyczyny

Kliknij prawym przyciskiem myszy Sesję 73 i wybierz Szczegóły aby wyświetlić polecenie:

UPDATE Orders 
SET Status = 'Processing', 
    LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);

Ta aktualizacja jest częścią zadania przetwarzania wsadowego, które jest uruchamiane co godzinę. Sprawdzanie Zaloguj Kolumna potwierdza, że ​​sesja należy do konta usługi przetwarzania wsadowego.

Zapytanie utrzymuje blokady na tabeli „Zamówienia” podczas przetwarzania tysięcy zamówień. Czas oczekiwania w przypadku zablokowanych sesji liczba ta stale rośnie, co potwierdza, że ​​przyczyną problemu jest długotrwała operacja.

11.2.3 Wdrażanie poprawki

Rozwiązanie krótkoterminowe:

  1. Szczegóły sesji dokumentacyjnej 73, w tym tekst zapytania i czas trwania.
  2. Pozwól na naturalne ukończenie aktualizacji, ponieważ jest to zgodne z prawem przetwarzanie wsadowe.
  3. Po zakończeniu sprawdź, czy zablokowane sesje zostały usunięte, a normalne działanie zostanie wznowione.

Wdrożone rozwiązania długoterminowe:

  1. Zaplanuj ponownie zadanie wsadowe kursować poza godzinami szczytu (2-4 rano zamiast w godzinach pracy).
  2. Modyfikuj przetwarzanie wsadowe do aktualizowania zamówień w mniejszych partiach po 100 rekordów na raz, zwalniając blokady pomiędzy partiami.
  3. Dodaj indeks w kolumnie OrderId, aby przyspieszyć operację aktualizacji.
  4. Rozważ izolację SNAPSHOT do operacji odczytu w celu zmniejszenia wpływu blokowania.

11.3 Studium przypadku: Identyfikacja nadmiernej liczby wykonań zapytań

Monitorowanie bazy danych wykazało, że użycie procesora stopniowo wzrastało na przestrzeni ostatniego miesiąca, ale w kodzie aplikacji nie zaszły żadne widoczne zmiany.

11.3.1 Wykrywanie nieprawidłowej liczby wykonań

Otwórz Monitor aktywności i sprawdź panel Ostatnie kosztowne zapytania:

  1. Sortuj według Wykonania/min zobaczyć most często wykonywane zapytania.
  2. Najwyższe zapytanie wykazuje 37 000 wykonań na minutę — znacznie więcej niż jakiekolwiek inne zapytanie.
  3. Kliknij prawym przyciskiem myszy i wybierz Edytuj tekst zapytania.
  4. Zapytanie pobiera informacje o kategorii produktu:
    SELECT CategoryId, CategoryName 
    FROM ProductCategories 
    WHERE CategoryId = @CategoryId;
    
  5. To proste zapytanie powinno być szybkie i możliwe do zapisania w pamięci podręcznej, a mimo to jest wykonywane dziesiątki tysięcy razy na minutę.

11.3.2 Śledzenie kodu aplikacji

W panelu Procesy znajdź sesje wykonujące to zapytanie:

  1. Zanotuj Zastosowanie w kolumnie widnieje „ProductCatalogService”.
  2. Kliknij prawym przyciskiem myszy jedną z tych sesji i wybierz Proces śledzenia w SQL Server Profiler.
  3. SQL Profiler ujawnia, że ​​zapytanie jest wykonywane wielokrotnie w krótkich odstępach czasu z różnymi wartościami CategoryId.
  4. Skontaktuj się z zespołem programistów zarządzającym ProductCatalogService w celu przeprowadzenia przeglądu kodu.

Przegląd kodu ujawnia problem: niedawna zmiana powoduje pobranie listy produktów z kategoriami. Dla każdego produktu w zestawie wyników (często ponad 1,000 produktów) kod wykonuje osobne wywołanie bazy danych w celu pobrania informacji o kategorii – klasyczny problem zapytania N+1.

11.3.3 Optymalizacja aplikacji

Wdrożenie właściwego rozwiązania:

  1. Modyfikuj zapytanie aplikacji aby użyć JOIN pobierającego produkty i ich kategorie w jednym wywołaniu bazy danych:
    SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName
    FROM Products p
    INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId
    WHERE p.Active = 1;
    
  2. Wdróż zaktualizowany kod i monitoruj Monitor aktywności.
  3. Sprawdź poprawkę: Liczba wykonań zapytań dotyczących kategorii na minutę spadła z 37 000 do poniżej 100, a ogólne wykorzystanie procesora zmniejszyło się o 40%.
  4. Udokumentuj wyciągniętą lekcję i dzielić się nimi z zespołem programistów, aby zapobiec podobnym problemom przy przyszłych zmianach kodu.

12. Wykryj potencjalne uszkodzenie bazy danych

Mimo że Monitor aktywności nie został zaprojektowany specjalnie do wykrywania uszkodzeń bazy danych, pewne wzorce w jego wyświetlaniu mogą sugerować ukryte problemy z uszkodzeniami, które wymagają dalszego zbadania.

12.1 Objawy potencjalnego uszkodzenia bazy danych

Jeśli występuje uszkodzenie bazy danych i jest ona używana, czasami możesz zobaczyć:

1. W panelu Procesy:

  • Sesje utknięte w stanie ZAWIESZENIA z nietypowymi typami oczekiwania
  • Procesy pokazujące stany błędów
  • Wielokrotne niepowodzenia zapytań

2. W panelu Oczekiwania na zasoby:

  • Nietypowe typy oczekiwania związane z wejściem/wyjściem, które mogą wskazywać na problemy z dyskiem (choć najprawdopodobniej oznacza to problemy sprzętowe, a nie uszkodzenie logiczne)

3. W ostatnich kosztownych zapytaniach:

  • Zapytania z nienormalnie wysokimi odczytami fizycznymi, jeśli wielokrotnie próbują odczytać uszkodzone strony

12.2 Dalsze sprawdzanie za pomocą DBCC CHECKDB

Gdy Monitor Aktywności wyświetli objawy sugerujące potencjalne uszkodzenie, należy natychmiast uruchomić polecenie DBCC CHECKDB w celu weryfikacji integralności bazy danych. To polecenie skanuje wszystkie strony bazy danych, weryfikuje sumy kontrolne i sprawdza poprawność logiczną pod kątem błędów.

Aby dowiedzieć się więcej o tym, jak używać DBCC CHECKDB do sprawdzania i naprawiania uszkodzeń bazy danych, zapoznaj się z naszym kompleksowy przewodnik DBCC CHECKDB.

12.3 Naprawa przy użyciu profesjonalnych narzędzi

Jeśli DBCC CHECKDB potwierdzi uszkodzenie bazy danych, masz kilka możliwości naprawy:

13. Wniosek

SQL Server Monitor aktywności to nieocenione narzędzie dla administratorów baz danych, zapewniające natychmiastowy wgląd w wydajność serwera i pomagające szybko i skutecznie diagnozować problemy.

13.1 Podsumowanie kluczowych punktów

W tym przewodniku omówiliśmy, w jaki sposób Monitor aktywności pomaga zrozumieć i rozwiązywać problemy SQL Server wydajność:

  • Monitor aktywności zapewnia wgląd w czasie rzeczywistym w procesy, oczekiwania, zapytania i operacje wejścia/wyjścia za pośrednictwem zorganizowanego interfejsu graficznego.
  • Każdy z pięciu paneli — Przegląd, Procesy, Oczekiwanie na zasoby, Wejście/wyjście pliku danych i Ostatnie kosztowne zapytania — oferuje unikalny wgląd w aktywność serwera.
  • Typowe scenariusze rozwiązywania problemów, takie jak nadmierna liczba wykonywanych zapytań, blokujące łańcuchy i wysokie wykorzystanie procesora, stają się łatwiejsze do opanowania dzięki systematycznemu badaniu za pomocą Monitora aktywności.
  • Mimo że Monitor aktywności jest wydajny, ma on ograniczenia, w tym brak danych historycznych, grupowanie typów oczekiwania i obciążenie monitorowania, które wpływają na jego zastosowanie.cabprzydatność.
  • Uzupełnienie Monitora aktywności o zapytania DMV, sp_WhoIsActive, zdarzenia rozszerzone i potencjalnie narzędzia innych firm pozwala na stworzenie kompleksowej strategii monitorowania.
  • Stosowanie najlepszych praktyk dotyczących interwałów odświeżania, zamykanie Monitora aktywności, gdy nie jest używany, oraz łączenie wielu paneli w celu korelacji maksymalizuje jego wartość, jednocześnie minimalizując wpływ.

13.2 Monitor aktywności jako część Twojego zestawu narzędzi

Monitor Aktywności powinien być Twoim pierwszym, a nie jedynym narzędziem do analizy wydajności. Jego zaletą jest natychmiastowy wgląd w sytuację podczas aktywnego rozwiązywania problemów, co pozwala szybko określić, czy baza danych stanowi wąskie gardło, i zidentyfikować konkretne aspekty wymagające głębszej analizy.

Wyobraź sobie Monitor Aktywności jako analogię do deski rozdzielczej w samochodzie – natychmiast informuje Cię, jeśli coś jest nie tak i pomaga zidentyfikować ogólny obszar zainteresowania. Tak jak deska rozdzielcza samochodu nie mówi dokładnie, dlaczego zapaliła się kontrolka check engine, Monitor Aktywności wskazuje problemy, nie zawsze ujawniając ich pełną przyczynę. Głębsza analiza wymaga dodatkowych narzędzi i wiedzy specjalistycznej.

Zintegruj Monitor Aktywności z szerszym zestawem narzędzi, który obejmuje analizę planu wykonania, śledzenie statystyk oczekiwania, rozwiązania do monitorowania historii i najlepsze praktyki dotyczące wydajności. Używaj go w połączeniu z odpowiednimi strategiami indeksowania, technikami optymalizacji zapytań i planowaniem pojemności.

13.3 Kontynuowanie procesu uczenia się

Opanowanie Monitora Aktywności to tylko jeden krok do zostania skutecznym administratorem baz danych. Kontynuuj rozwijanie swoich umiejętności poprzez:

  • Nauka interpretowania planów wykonania i identyfikowania nieefektywnych operacji
  • Rozumienie SQL Server statystyki oczekiwania i ich implikacje
  • Badanie technik projektowania i optymalizacji indeksów
  • Exploring SQL Serverarchitektura i sposób przetwarzania zapytań
  • Praktykowanie systematycznych metod rozwiązywania problemów
  • Zdobywanie doświadczenia z wydarzeniami rozszerzonymi w celu szczegółowego śledzenia
  • Zrozumienie poziomów izolacji transakcji i ich wpływu na wydajność

Każde badanie wydajności za pomocą Monitora aktywności uczy Cię czegoś nowego o tym, jak SQL Server Działa i jak aplikacje współdziałają z bazami danych. Dokumentuj swoje odkrycia, dziel się wiedzą z kolegami i twórz bibliotekę.rarwiele rozwiązań typowych problemów.

13.4 Dodatkowe zasoby

Poszerz swoją wiedzę korzystając z tych cennych źródeł:

14. Często zadawane pytania (FAQ)

P: Co to jest SQL Server Monitor aktywności?

A: SQL Server Monitor aktywności to wbudowane narzędzie SQL Server Management Studio wyświetlające w czasie rzeczywistym informacje o procesach uruchomionych na komputerze SQL Server instancji i ich wpływu na zasoby serwera. Zapewnia graficzny pulpit nawigacyjny z pięcioma panelami pokazującymi różne aspekty aktywności serwera, w tym wykorzystanie procesora, oczekujące zadania, szybkość wejścia/wyjścia, aktywne sesje i kosztowne zapytania.

P: Jak otworzyć Monitor aktywności w programie SSMS?

A: Monitor aktywności można otworzyć na cztery sposoby: (1) Kliknij ikonę Monitor aktywności na pasku narzędzi SSMS, (2) Kliknij prawym przyciskiem myszy SQL Server nazwę instancji w Eksploratorze obiektów i wybierz Activity monitor, (3) Naciśnij Ctrl + inny + Alub (4) Skonfiguruj SSMS tak, aby uruchamiał się automatycznie za pomocą Narzędzia -> Opcje -> Środowisko -> Uruchomienie.

P: Jakich uprawnień potrzebuję, aby korzystać z Monitora aktywności?

A: Potrzebujesz WYŚWIETL STAN SERWERA pozwolenie na zobaczenie most Informacje z Monitora aktywności. W przypadku panelu wejścia/wyjścia pliku danych potrzebne są również: UTWÓRZ BAZĘ DANYCH, ZMIEŃ DOWOLNĄ BAZĘ DANYCHlub ZOBACZ DOWOLNĄ DEFINICJĘ Uprawnienia. Bez tych uprawnień Monitor aktywności może się otworzyć, ale wyświetlać puste panele.

P: Dlaczego mój Monitor aktywności jest wstrzymany lub nie działa?

A: Monitor aktywności zazwyczaj wstrzymuje się z powodu problemów z uprawnieniami, nieaktualnych wersji programu SSMS lub wyłączonych połączeń zdalnych. Aby rozwiązać ten problem: (1) Zaktualizuj program SSMS do najnowszej wersji, (2) Sprawdź, czy masz uprawnienie WYŚWIETLANIE STANU SERWERA, (3) Sprawdź, czy połączenia zdalne są włączone na serwerze. SQL Server instancja, (4) Restart SSMS i (5) Spróbuj połączyć się z uwierzytelnianiem systemu Windows zamiast uwierzytelniania SQL, jeśli ma to zastosowaniecabim.

P: Jaka jest różnica między Activity Monitor a sp_WhoIsActive?

A: Monitor aktywności to graficzne narzędzie wbudowane w SSMS, które oferuje uporządkowane panele dla różnych aspektów monitorowania. sp_WhoIsActive to darmowa, stworzona przez społeczność procedura składowana, która zwraca szczegółowe informacje o sesji w jednym zestawie wyników, z bardziej szczegółowymi typami oczekiwania, szczegółami blokowania i opcjami dostosowywania niż Monitor aktywności. Monitor aktywności lepiej nadaje się do wizualnej eksploracji, podczas gdy sp_WhoIsActive doskonale sprawdza się w monitorowaniu skryptowym i dostarcza bardziej szczegółowych informacji.

P: Czy Monitor aktywności wpływa na wydajność serwera?

O: Tak, Monitor Aktywności ma mierzalny narzut, ponieważ odpytuje systemowe dane DMV przy każdym interwale odświeżania. Wpływ ten wzrasta przy niższych częstotliwościach odświeżania — Microsoft ostrzega, że ​​interwały poniżej 10 sekund mogą wpływać na wydajność serwera. Zawsze zamykaj Monitor Aktywności, gdy nie jest aktywnie używany, i rozważ 30-60-sekundowe interwały odświeżania na serwerach produkcyjnych pod dużym obciążeniem.

P: Czy mogę uzyskać dane z Monitora aktywności za pomocą języka T-SQL?

O: Tak, Monitor Aktywności odpytuje dynamiczne widoki zarządzania systemem, takie jak sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats i sys.dm_exec_query_stats. Można odpytywać te widoki DMV bezpośrednio za pomocą języka T-SQL, aby programowo pobrać równoważne informacje, co umożliwia tworzenie niestandardowych skryptów monitorujących i automatyczne zbieranie danych.

P: Jaki jest domyślny interwał odświeżania?

A: Domyślny interwał odświeżania wynosi 10 sekund. Możesz go zmienić, klikając prawym przyciskiem myszy w dowolnym miejscu panelu Przegląd i wybierając Częstotliwość odświeżaniai wybierając spośród predefiniowanych opcji: 1 sekunda, 5 sekund, 10 sekund, 30 sekund, 1 minuta lub 1 godzina. Krótsze interwały zapewniają więcej widoków w czasie rzeczywistym, ale zwiększają obciążenie monitorowania.

P: Jak mogę automatycznie otworzyć Monitor aktywności w systemie SSMS?tarkafar?

A: Skonfiguruj automatyczne uruchamianie za pomocą opcji SSMS: Przejdź do Narzędzia -> Opcje -> Środowisko -> Uruchomienie, A następnie wybierz opcję Otwórz Eksplorator obiektów i Monitor aktywności z w starrura Monitor aktywności otworzy się automatycznie za każdym razem, gdy połączysz się z serwerem w SSMS.

P: Jakie są ograniczenia Monitora Aktywności?

A: Główne ograniczenia obejmują: (1) Brak możliwości przechowywania danych historycznych lub tworzenia trendów, (2) Typy oczekiwania są grupowane w kategorie, a nie wyświetlane osobno, (3) Niektóre typy oczekiwania, takie jak CXPACKET, mogą się nie pojawiać, (4) Migawki punktowe mogą pomijać problemy przejściowe, (5) Narzut monitorowania może mieć wpływ na obciążone serwery, (6) Brak mechanizmu ostrzegania w celu proaktywnego monitorowania oraz (7) Brak możliwości agregowania danych z wielu źródeł SQL Server W tym celu należy uzupełnić Monitor Aktywności o zdarzenia rozszerzone, zestawy danych lub narzędzia monitorujące innych firm.


O autorze

Yuan Sheng jest starszym administratorem baz danych (DBA) z ponad 10-letnim doświadczeniem w SQL Server środowiskach i zarządzaniu bazami danych przedsiębiorstw. Z powodzeniem rozwiązał setki scenariuszy odzyskiwania baz danych w firmach z branży usług finansowych, opieki zdrowotnej i produkcji.

Yuan specjalizuje się w SQL Server odzyskiwanie baz danych, rozwiązania o wysokiej dostępnościi optymalizacji wydajności. Jego bogate doświadczenie praktyczne obejmuje zarządzanie wieloterabajtowymi bazami danych, wdrażanie grup Always On Availability Groups oraz opracowywanie zautomatyzowanych strategii tworzenia kopii zapasowych i odzyskiwania danych dla systemów biznesowych o znaczeniu krytycznym.

Dzięki swojej wiedzy technicznej i praktycznemu podejściu Yuan skupia się na tworzeniu kompleksowych przewodników, które pomagają administratorom baz danych i specjalistom IT rozwiązywać złożone problemy SQL Server skutecznie stawia czoła wyzwaniom. Jest na bieżąco z najnowszymi SQL Server wydania i rozwijające się technologie baz danych firmy Microsoft, regularnie testując scenariusze odzyskiwania, aby mieć pewność, że jego zalecenia odzwierciedlają najlepsze praktyki stosowane w praktyce.

Masz pytania dot SQL Server Potrzebujesz pomocy w odzyskiwaniu danych lub dodatkowych wskazówek dotyczących rozwiązywania problemów z bazą danych? Yuan zaprasza opinie i sugestie w celu udoskonalenia tych zasobów technicznych.

Podziel się teraz: