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

SYS.DM_DB_INDEX_OPERATIONAL_STATS

Termin Definicja
SYS.DM_DB_INDEX_OPERATIONAL_STATS

sys.dm_db_index_operational_stats zwraca statystyki operacyjne indeksu, w tym blokady i oczekiwania.

Do czego służy sys.dm_db_index_operational_stats

sys.dm_db_index_operational_stats jest dynamiczną funkcją zarządzania w Microsoft SQL Server, przeznaczoną do obserwowania operacyjnego zachowania indeksów i stert. Zwraca informacje o tym, jak silnik wykonuje operacje na strukturach indeksowych podczas pracy obciążonej aplikacji. Dane obejmują między innymi blokady, oczekiwania na blokady, oczekiwania na zatrzaski stron oraz operacje wejścia-wyjścia związane z poziomem liści indeksu. Funkcja nie pokazuje definicji indeksu ani planu wykonania pojedynczego zapytania; dostarcza skumulowane liczniki aktywności dla wskazanego zakresu obiektów.

Funkcja przyjmuje cztery parametry: database_id, object_id, index_id oraz partition_number. Parametr o wartości NULL działa jako symbol wieloznaczny i pozwala pobrać dane dla wszystkich pasujących baz, obiektów, indeksów albo partycji w zakresie dozwolonym przez pozostałe parametry. Dzięki temu można analizować pojedynczy indeks, wszystkie indeksy konkretnej tabeli albo szerszy fragment bazy danych. Wynik powinien być interpretowany w odniesieniu do czasu obserwacji, ponieważ same liczniki nie wskazują, kiedy dokładnie wystąpiła dana operacja.

Jakie informacje zwraca funkcja

Wynik zawiera identyfikatory bazy, obiektu, indeksu i partycji, a także liczniki operacji wykonywanych na strukturze. Przykładami są leaf_insert_count, leaf_delete_count i leaf_update_count, które opisują modyfikacje na poziomie liści, oraz liczniki podziałów stron, takich jak leaf_allocation_count i leaf_page_merge_count. Dla indeksów przechowujących dane w strukturze B-drzewa takie wartości mogą pomóc ocenić, czy obiekt jest intensywnie modyfikowany i czy występuje zwiększona presja na alokację stron.

Istotną grupę stanowią liczniki blokad i oczekiwań. Kolumny row_lock_count oraz page_lock_count informują o liczbie żądań blokad na wierszach i stronach, natomiast row_lock_wait_count i page_lock_wait_count pokazują liczbę oczekiwań związanych z tymi rodzajami blokad. Odpowiadające im kolumny czasu oczekiwania, między innymi row_lock_wait_in_ms i page_lock_wait_in_ms, podają łączny czas oczekiwania w milisekundach. Wartości te należy porównywać z liczbą operacji oraz przedziałem obserwacji; sam wysoki licznik nie dowodzi jeszcze, że indeks jest przyczyną spowolnienia.

Praktyczna analiza danych w SQL Server

Funkcję często łączy się z widokami katalogowymi sys.indexes, sys.objects, sys.schemas i sys.partitions, aby zastąpić identyfikatory nazwami tabel, indeksów i partycji. Przykładowe zapytanie może pobrać dane dla wszystkich indeksów bieżącej bazy:

SELECT object_id, index_id, partition_number, row_lock_count, row_lock_wait_count, row_lock_wait_in_ms, page_io_latch_wait_count, leaf_insert_count, leaf_update_count FROM sys.dm_db_index_operational_stats(DB_ID(), NULL, NULL, NULL);

Takie zestawienie warto wykonywać co najmniej dwa razy w ustalonym odstępie, a następnie obliczać różnice między odczytami. Analiza przyrostów pozwala odróżnić indeks stale używany od indeksu, który tylko odziedziczył wysokie liczniki po wcześniejszym okresie pracy. Znaczny przyrost oczekiwań na blokady może wskazywać na konflikt transakcji, długie transakcje albo nieodpowiednią kolejność dostępu do danych. Przyrosty oczekiwań zatrzasków stron mogą natomiast wymagać korelacji z typem obciążenia, rozkładem modyfikacji i innymi danymi diagnostycznymi SQL Server.

Ograniczenia interpretacji i diagnostyki

Liczniki zwracane przez sys.dm_db_index_operational_stats mają charakter bieżący i nie są dziennikiem historycznym. Ich zakres zależy od cyklu życia instancji, bazy, obiektu lub indeksu, dlatego restart SQL Server albo ponowne otwarcie bazy może zmienić punkt odniesienia. Funkcja nie określa użytkownika, sesji ani konkretnego tekstu zapytania odpowiedzialnego za oczekiwanie. Do ustalenia aktualnych blokad potrzebne są inne mechanizmy diagnostyczne, takie jak widoki dynamiczne dotyczące sesji i żądań, a do analizy planów wykonania — informacje o zapytaniach i planach w SQL Server.

Dostęp do danych podlega uprawnieniom obowiązującym w danej wersji SQL Server. W starszych wersjach wymagane jest odpowiednie uprawnienie związane z obserwacją stanu serwera, natomiast w SQL Server 2022 wprowadzono między innymi uprawnienie VIEW SERVER PERFORMANCE STATE dla części informacji o wydajności. Przy diagnozowaniu środowiska produkcyjnego należy więc sprawdzić zarówno wersję silnika, jak i uprawnienia konta wykonującego zapytanie. Wyniki tej funkcji są użyteczne jako element analizy obciążenia indeksów, ale nie powinny być jedyną podstawą przebudowy, usuwania indeksu ani zmiany projektu transakcji.

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