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

Dynamic Management Views

Termin Definicja
Dynamic Management Views

Dynamic Management Views to widoki systemowe SQL Server dostarczające bieżących informacji o kondycji i wydajności serwera.

Rola Dynamic Management Views w SQL Server

Dynamic Management Views, skrótowo DMV, to specjalne widoki systemowe dostępne w Microsoft SQL Server. Udostępniają informacje o aktualnym stanie instancji, baz danych, sesji, żądań, pamięci, blokad, indeksów oraz innych elementów silnika. Dane są generowane przez działający silnik bazy danych, dlatego opisują bieżącą sytuację albo statystyki zebrane od uruchomienia instancji, utworzenia planu wykonania lub wyczyszczenia odpowiednich liczników. DMV nie są zwykłymi tabelami przeznaczonymi do ręcznej edycji i nie służą do przechowywania danych aplikacji.

Widoki zarządzania dynamicznego występują między innymi w postaci obiektów o nazwach zaczynających się od sys.dm_ oraz sys.dmf_. Widok typu DMV zwraca zestaw wierszy, natomiast dynamiczna funkcja zarządzania, oznaczana prefiksem sys.dmf_, może wymagać przekazania parametrów. Zakres dostępnych obiektów i zwracanych kolumn zależy od wersji SQL Server oraz poziomu, którego dotyczy dany widok: instancji, bazy danych, pliku, sesji albo konkretnego żądania.

Informacje o sesjach, żądaniach i blokadach

Jednym z typowych zastosowań DMV jest ustalenie, co aktualnie wykonuje się w instancji SQL Server. Widok sys.dm_exec_sessions opisuje sesje użytkowników i procesów systemowych, między innymi identyfikator sesji, nazwę logowania, nazwę hosta oraz czas rozpoczęcia połączenia. sys.dm_exec_requests pokazuje aktywne żądania, w tym wykonywane polecenie, czas trwania, stan, oczekiwanie i identyfikator blokującej sesji. Dzięki połączeniu tych danych z sys.dm_exec_sql_text można odczytać tekst polecenia powiązanego z uchwytem planu lub żądania.

Do analizy blokad służy między innymi sys.dm_tran_locks, który pokazuje zasoby objęte blokadami i tryby blokowania, takie jak S dla blokady współdzielonej albo X dla blokady wyłącznej. W praktyce DMV pomagają odróżnić długie zapytanie od zapytania oczekującego na zwolnienie zasobu. Przy interpretacji wyników trzeba uwzględnić izolację transakcji, aktywne transakcje oraz fakt, że wynik jest migawką odczytaną w konkretnej chwili. Sam obecny wiersz w DMV nie zawsze oznacza trwałą awarię.

Dostęp do informacji na poziomie instancji może wymagać uprawnień administracyjnych. W zależności od wersji SQL Server i rodzaju odczytywanych danych stosowane są między innymi uprawnienia VIEW SERVER STATE albo nowsze, bardziej szczegółowe uprawnienia diagnostyczne. Brak odpowiednich praw może skutkować ograniczonym wynikiem, błędem dostępu lub niewidocznością informacji dotyczących innych sesji.

Wydajność zapytań i statystyki silnika

DMV są często używane do wyszukiwania zapytań zużywających dużo procesora, czasu wejścia-wyjścia albo pamięci. Widoki sys.dm_exec_query_stats, sys.dm_exec_sql_text i sys.dm_exec_query_plan pozwalają zestawić statystyki agregowane dla wpisów w pamięci podręcznej planów z tekstem SQL oraz planem wykonania. W wynikach można analizować między innymi liczbę wykonań, całkowity i średni czas procesora, liczbę odczytów logicznych oraz czas ostatniego wykonania. Statystyki dotyczą wpisów obecnych w pamięci podręcznej, więc mogą zniknąć po usunięciu planu, ponownym uruchomieniu instancji albo innych zdarzeniach wpływających na cache.

Widok sys.dm_os_wait_stats zbiera informacje o czasach oczekiwania silnika. Pozwala sprawdzić, czy znaczącą część czasu stanowią oczekiwania związane z blokadami, dyskiem, synchronizacją, pamięcią lub innymi zasobami. Wynik trzeba interpretować razem z czasem uruchomienia instancji i zakresem wyzerowania liczników, ponieważ DMV nie przedstawia automatycznie przyczyny każdego spowolnienia. Z kolei sys.dm_db_index_usage_stats pokazuje użycie indeksów w danej bazie, w tym liczbę operacji wyszukiwania, skanowania, aktualizacji i usunięcia. Brak odnotowanego użycia nie jest samodzielnym dowodem, że indeks można bezpiecznie usunąć.

Do oceny brakujących indeksów można wykorzystać między innymi sys.dm_db_missing_index_details, sys.dm_db_missing_index_groups oraz sys.dm_db_missing_index_group_stats. Sugestie tych widoków są wskazówkami wynikającymi z obserwowanych zapytań, a nie gotowymi poleceniami wdrożeniowymi. Przed utworzeniem indeksu należy sprawdzić plan wykonania, rozmiar tabeli, częstotliwość modyfikacji, istniejące indeksy i koszt dodatkowych operacji zapisu.

Granice interpretacji i bezpieczne wykorzystanie DMV

Dynamic Management Views opisują stan obserwowany przez SQL Server, ale nie tworzą pełnego dziennika zdarzeń. Część danych jest resetowana po restarcie instancji, odtworzeniu bazy, usunięciu obiektu z pamięci podręcznej lub wyzerowaniu liczników. Niektóre widoki zawierają dane na poziomie bieżącej chwili, a inne agregują informacje przez okres, który może być krótszy od oczekiwanego. Z tego powodu pojedynczy odczyt DMV powinien być traktowany jako element diagnostyki, a nie jako niepodważalny dowód historycznego zachowania systemu.

Zapytania do DMV zwykle mają charakter odczytowy, lecz ich wykonanie może samo zużywać zasoby, zwłaszcza gdy wynik jest łączony z dużą liczbą planów, tekstów SQL albo obiektów metadanych. Należy również uważać na ujawnianie tekstów zapytań, nazw baz, loginów i nazw hostów w niekontrolowanych raportach. W diagnostyce warto zapisywać czas wykonania badania, nazwę instancji, bazę, zakres uprawnień oraz warunki, w których pobrano dane. Tak przygotowany wynik łatwiej porównać z logami, monitorowaniem systemu operacyjnego i planami wykonania.

Jeżeli DMV wskazują wysokie oczekiwania, blokadę albo nietypowe zużycie procesora, dalsze sprawdzenie powinno obejmować transakcje, konfigurację, obciążenie dysków, pamięć, harmonogram zadań i kod aplikacji. Sama zmiana konfiguracji, zabicie sesji lub usunięcie indeksu na podstawie jednego wyniku może pogorszyć sytuację. DMV najlepiej sprawdzają się jako precyzyjny punkt wejścia do analizy działania SQL Server i jako źródło mierzalnych danych porównawczych przed oraz po zmianie.

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