Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Widok sys.dm_os_wait_stats

Termin Definicja
Widok sys.dm_os_wait_stats

sys.dm_os_wait_stats to kluczowe DMV do diagnostyki wydajności, pokazujące, na co czekają zapytania.

Co pokazuje widok sys.dm_os_wait_stats

sys.dm_os_wait_stats jest dynamicznym widokiem zarządzania (DMV) w Microsoft SQL Server. Zawiera zagregowane informacje o oczekiwaniu wątków silnika na zasoby lub zdarzenia potrzebne do wykonania pracy. Wiersz opisuje typ oczekiwania oznaczony kolumną wait_type, a pozostałe pola pokazują między innymi liczbę oczekujących zadań, łączny czas oczekiwania oraz czas oczekiwania na przydzielenie procesora.

Najważniejsze kolumny to waiting_tasks_count, wait_time_ms, max_wait_time_ms i signal_wait_time_ms. wait_time_ms obejmuje czas oczekiwania na zasób, natomiast signal_wait_time_ms wskazuje część czasu, w której zadanie było gotowe do wykonania, ale czekało na procesor. Różnica między całkowitym czasem oczekiwania a czasem sygnału opisuje oczekiwanie na konkretny zasób. Wartości są kumulowane od uruchomienia instancji, od wyczyszczenia statystyk albo od momentu, w którym SQL Server rozpoczął zbieranie danego zestawu danych.

Jak czytać typy oczekiwań

Sam wysoki czas oczekiwania nie oznacza jeszcze awarii. Niektóre oczekiwania są normalnym skutkiem pracy systemu. Przykładowo THREADPOOL może wskazywać brak dostępnych wątków roboczych, RESOURCE_SEMAPHORE wiąże się z oczekiwaniem na pamięć przyznawaną zapytaniom, a PAGELATCH_* dotyczy synchronizacji dostępu do stron znajdujących się w pamięci. Z kolei PAGEIOLATCH_* oznacza oczekiwanie na operacje wejścia-wyjścia związane z odczytem stron danych z dysku lub innego magazynu.

W praktyce należy analizować grupę powiązanych oczekiwań oraz ich zmianę w czasie. CXPACKET i CXCONSUMER występują przy wykonywaniu zapytań równoległych i nie powinny być automatycznie traktowane jako błąd. Oczekiwania blokad, takie jak LCK_M_S lub LCK_M_X, wymagają sprawdzenia transakcji i sesji blokujących. Typy związane z logiem transakcyjnym, na przykład WRITELOG, mogą wskazywać na presję operacji zapisu do dziennika, ale ich interpretacja wymaga zestawienia z czasem trwania transakcji, obciążeniem I/O i charakterystyką aplikacji.

Pomiar przy użyciu zapytań T-SQL

Podstawowy odczyt można wykonać zapytaniem:

SELECT TOP (20) wait_type, waiting_tasks_count, wait_time_ms, signal_wait_time_ms, max_wait_time_ms FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC;

Taki ranking jest jedynie punktem wyjścia. Statystyki są wartościami narastającymi, dlatego lepszą metodą jest wykonanie dwóch odczytów w określonym odstępie i porównanie przyrostów. Dla każdego typu oczekiwania można obliczyć różnicę wait_time_ms oraz waiting_tasks_count między próbką początkową i końcową. Pozwala to wykryć, które oczekiwania powstały podczas konkretnego okresu obciążenia, zamiast przypisywać bieżącemu problemowi zdarzenia zgromadzone wiele godzin lub dni wcześniej.

W razie potrzeby statystyki można wyczyścić poleceniem DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);. Operacja usuwa zgromadzone wartości dla tej instancji i powinna być wykonywana świadomie, ponieważ utrudnia późniejsze porównanie z wcześniejszym okresem. Po wyczyszczeniu warto odczekać reprezentatywny czas pracy aplikacji i dopiero wtedy analizować wyniki. Do odczytu DMV wymagane są odpowiednie uprawnienia serwerowe, zależne od wersji SQL Server i konfiguracji zabezpieczeń, dlatego brak wyników lub błąd uprawnień nie powinien być mylony z brakiem oczekiwań.

Znaczenie DMV w diagnostyce instancji SQL Server

Widok jest użyteczny przy analizie spowolnień, ponieważ pomaga zawęzić obszar dalszej diagnostyki. Dominacja oczekiwań blokad kieruje uwagę na kolejność operacji, długość transakcji i indeksy. Wysoki udział oczekiwań I/O uzasadnia sprawdzenie opóźnień dysków, rozmiaru operacji odczytu, pamięci oraz planów zapytań. Przewaga czasu sygnału procesora może wskazywać na przeciążenie CPU albo konkurencję wielu zadań o zasoby obliczeniowe.

sys.dm_os_wait_stats nie pokazuje, które konkretne zapytanie wygenerowało dane oczekiwanie ani która sesja aktualnie blokuje inną sesję. Do pełnego obrazu trzeba połączyć jego wyniki z innymi mechanizmami SQL Server, takimi jak sys.dm_exec_requests, sys.dm_os_waiting_tasks, sys.dm_tran_locks oraz informacjami o planach wykonania. Istotne jest także rozróżnienie oczekiwań instancji od problemu pojedynczego zapytania: DMV opisuje zagregowany stan silnika, więc prawidłowa diagnoza wymaga korelacji z czasem wystąpienia objawów, obciążeniem i zmianami w aplikacji. Przy pracy diagnostycznej serwera należy zachować próbki przed i po zdarzeniu, opisać zakres czasowy oraz odnotować ewentualne restarty lub resetowanie statystyk.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę