Udostępnij za pośrednictwem


sys.dm_db_index_operational_stats (języka Transact-SQL)

Zwraca bieżącą niskiegopoziom we/wy, blokowania, latching i działanie metoda dostępu dla każdej partycji tabela lub indeksu w bazie danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sys.dm_db_index_operational_stats (
    { database_id | NULL | 0 | DEFAULT }
  , { object_id | NULL | 0 | DEFAULT }
  , { index_id | 0 | NULL | -1 | DEFAULT }
  , { partition_number | NULL | 0 | DEFAULT }
)

Argumenty

  • database_id| NULL | 0 | DOMYŚLNE
    Identyfikator bazy danych.database_idis smallint.Nieprawidłowe dane wejściowe są numer identyfikacyjny bazy danych, NULL, 0 lub domyślne.Wartość domyślna to 0.NULL, 0, a DOMYŚLNYM są wartości ekwiwalentne w tym kontekście.

    Należy określić wartość NULL do zwracania informacji dla wszystkich baz danych w wystąpienie SQL Server.Jeżeli określono wartość NULL dla database_id, należy także określić wartość NULL dla object_id, index_id, i partition_number.

    Wbudowanych funkcja DB_ID może być określony.Podczas korzystania z DB_ID bez określania nazwy bazy danych zgodności poziom bieżącej bazy danych musi być 90.

  • object_id | NULL | 0 | DOMYŚLNE
    Identyfikator obiektu w tabela lub widoku indeksu jest.object_idis int.

    Nieprawidłowe dane wejściowe są identyfikator tabela i w widoku, NULL, 0 lub domyślne.Wartość domyślna to 0.NULL, 0, a DOMYŚLNYM są wartości ekwiwalentne w tym kontekście.

    Należy określić wartość NULL, zwraca buforowane informacje dla wszystkich tabel i widoków w określonej bazie danych.Jeżeli określono wartość NULL dla object_id, należy także określić wartość NULL dla index_id i partition_number.

  • index_id| 0 | NULL | -1 | DOMYŚLNE
    Identyfikator indeksu.index_idis int.Nieprawidłowe dane wejściowe są identyfikator indeksu 0, jeśli object_id jest sterty, NULL, -1 lub domyślne.Wartością domyślną jest -1, wartości NULL, -1, a DOMYŚLNYM są wartości ekwiwalentne w tym kontekście.

    Należy określić wartość NULL, zwraca buforowane informacje wszystkie indeksy dla tabela bazowa lub widoku.Jeżeli określono wartość NULL dla index_id, należy także określić wartość NULL dla partition_number.

  • partition_number | NULL | 0 | DOMYŚLNE
    Numer partycji w obiekcie.partition_numberis int.Nieprawidłowe dane wejściowe są partion_number indeksu lub sterty, NULL, 0 lub domyślne.Wartość domyślna to 0.NULL, 0, a DOMYŚLNYM są wartości ekwiwalentne w tym kontekście.

    Należy określić wartość NULL, zwraca buforowane informacje dla wszystkich partycji indeksu lub sterty.

    partition_numberjest oparte na 1.Nonpartitioned indeksu lub sterty ma partition_number zestaw na wartość 1.

Zwracana tabela

Nazwa kolumny

Typ danych

Opis

database_id

smallint

Identyfikator bazy danych.

object_id

int

Identyfikator tabela lub widoku.

index_id

int

Identyfikator indeksu lub sterty.

0 = Sterty

partition_number

int

numer partycji na 1 w indeksie lub sterty.

leaf_insert_count

bigint

Skumulowana liczba liść- wstawiapoziom .

leaf_delete_count

bigint

Skumulowana liczba liść- usuwapoziom .

leaf_update_count

bigint

Skumulowana liczba liść-poziom aktualizacje.

leaf_ghost_count

bigint

Skumulowana liczba liść-poziom wierszy, które są oznaczone jako usunięte, ale nie zostały jeszcze usunięte.Te wiersze są usuwane przez oczyszczanie wątek zestaw odstępach.Wartość ta nie obejmuje wierszy, które są zatrzymane z powodu transakcji izolacji zaległych migawka .Aby uzyskać więcej informacji o transakcjach izolacji migawka , zobacz Wiersz wersji na podstawie poziomów izolacji w aparacie bazy danych.

nonleaf_insert_count

bigint

Skumulowana liczba wstawia powyżejpoziom liść.

0 = Sterty

nonleaf_delete_count

bigint

Skumulowana liczba usuwa powyżejpoziom liść.

0 = Sterty

nonleaf_update_count

bigint

Skumulowana liczba aktualizacji powyżejpoziom liść.

0 = Sterty

leaf_allocation_count

bigint

Skumulowana liczba liść-poziomalokacjistrona w indeksie lub sterty.

Podział strona na indeks odpowiada podziału strona .

nonleaf_allocation_count

bigint

Skumulowana liczba alokacje strona spowodowane przez strona dzieli się powyżejpoziom liść.

0 = Sterty

leaf_page_merge_count

bigint

Skumulowana liczba strona scala napoziom liść.

nonleaf_page_merge_count

bigint

Skumulowana liczba strona scala się powyżejpoziom liść.

0 = Sterty

range_scan_count

bigint

Skumulowana liczba skanowanie zakres i tabela rozpoczęto indeksu lub sterty.

singleton_lookup_count

bigint

Skumulowana liczba pobieraniu pojedynczy wiersz z indeksu lub sterty.

forwarded_fetch_count

bigint

Liczba wierszy, które były pobierane za pośrednictwem rekordu przesyłania dalej.

0 = Indeksów

lob_fetch_in_pages

bigint

Skumulowana liczba stron dużego obiektu (LOB) są pobierane z LOB_DATA jednostka alokacji.Te strony zawierają dane przechowywane w kolumnach typu text, ntext, image, varchar(max), nvarchar(max), varbinary(max), i xml.Aby uzyskać więcej informacji, zobacz Typy danych (Transact-SQL).Aby uzyskać więcej informacji na temat jednostek alokacji, zobacz Organizacji indeksu i tabeli.

lob_fetch_in_bytes

bigint

Skumulowana liczba bajtów dane LOB pobierane.

lob_orphan_create_count

bigint

Skumulowana liczba utworzonych dla operacji zbiorczych sierocych wartości LOB.

0 = Indeks nieklastrowany

lob_orphan_insert_count

bigint

Skumulowana liczba sierocych wartości LOB podczas operacji zbiorczych wstawione.

0 = Indeks nieklastrowany

row_overflow_fetch_in_pages

bigint

Skumulowana liczba stron wiersze danych przekraczające rozmiar strony jest pobierana z ROW_OVERFLOW_DATA jednostka alokacji.

Te strony zawierają dane przechowywane w kolumnach typu varchar(n), nvarchar(n), varbinary(n), i sql_variant , została przesunięta-wiersz.Aby uzyskać więcej informacji, zobacz Przepełnienie wiersz danych powyżej 8 KB.Aby uzyskać więcej informacji na temat jednostek alokacji, zobacz Organizacji indeksu i tabeli.

row_overflow_fetch_in_bytes

bigint

Skumulowana liczba bajtów wiersze danych przekraczające rozmiar strony pobrany.

column_value_push_off_row_count

bigint

Skumulowana liczba wartości kolumna dane LOB i wiersze danych przekraczające rozmiar strony jest przesunięta poza wiersz aby wiersz wstawiony lub zaktualizowany dopasowanie na strona.

column_value_pull_in_row_count

bigint

Skumulowana liczba wartości kolumna dane LOB i wiersze danych przekraczające rozmiar strony jest pobierana w wierszu.Dzieje się tak podczas operacji update zwalnia miejsce w rekordzie i zapewnia szansy sprzedaży do ściągać w jedną lub więcej wartości wyłącz wiersz z jednostek alokacji LOB_DATA lub ROW_OVERFLOW_DATA IN_ROW_DATA jednostka alokacji.Aby uzyskać więcej informacji na temat jednostek alokacji, zobacz Organizacji indeksu i tabeli.

row_lock_count

bigint

Skumulowana liczba blokad wiersza żądana.

row_lock_wait_count

bigint

Skumulowana liczba Aparat baz danych oczekiwały na wiersz blokada.

row_lock_wait_in_ms

bigint

Całkowita liczba milisekund, Aparat baz danych oczekiwały na wiersz blokada.

page_lock_count

bigint

Skumulowana liczba blokad strona wnosi.

page_lock_wait_count

bigint

Skumulowana liczba Aparat baz danych oczekiwały na strona blokada.

page_lock_wait_in_ms

bigint

Całkowita liczba milisekund, Aparat baz danych oczekiwały na strona blokada.

index_lock_promotion_attempt_count

bigint

Skumulowana liczba Aparat baz danych próbował eskalować blokad.

index_lock_promotion_count

bigint

Skumulowana liczba Aparat baz danych przekazany blokad.

page_latch_wait_count

bigint

Skumulowana liczba Aparat baz danych 15–30 z powodu zatrzaśnięcie rywalizacja.

page_latch_wait_in_ms

bigint

Skumulowana liczba milisekund Aparat baz danych 15–30 z powodu zatrzaśnięcie rywalizacja.

page_io_latch_wait_count

bigint

Skumulowana liczba Aparat baz danych oczekiwały na stronaWe/Wyzatrzaśnięcie.

page_io_latch_wait_in_ms

bigint

Skumulowana liczba milisekund Aparat baz danych oczekiwały na strona We/Wy zatrzaśnięcie.

tree_page_latch_wait_count

bigint

Podzbiór page_latch_wait_count , w którym uwzględniono tylko górny -poziom B-drzewo strony.Zawsze 0 sterty.

tree_page_latch_wait_in_ms

bigint

Podzbiór page_latch_wait_in_ms , w którym uwzględniono tylko górny -poziom B-drzewo strony.Zawsze 0 sterty.

tree_page_io_latch_wait_count

bigint

Podzbiór page_io_latch_wait_count , w którym uwzględniono tylko górny -poziom B-drzewo strony.Zawsze 0 sterty.

tree_page_io_latch_wait_in_ms

bigint

Podzbiór page_io_latch_wait_in_ms , w którym uwzględniono tylko górny -poziom B-drzewo strony.Zawsze 0 sterty.

page_compression_attempt_count

bigint

Liczba stron, które zostały poddane ocenie strony poziom kompresji dla określonej partycji tabela, indeksowany widoklub indeksu.Zawiera strony, które nie zostały skompresowane, ponieważ nie można osiągnąć znaczne oszczędności.

page_compression_success_count

bigint

Numer strony danych, które zostały skompresowane przy użyciu kompresji strony dla określonej partycji tabela, indeksowany widoklub indeksu.

Uwagi

Ten obiekt dynamicznego zarządzania nie akceptuje parametry skorelowanych z granic zastosowanie i zewnętrzne.

Można użyć sys.dm_db_index_operational_stats do śledzenia czas , że użytkownicy muszą czekać do odczytu lub zapisu do tabela, indeks lub partycji i zidentyfikować tabel lub indeksy, które wystąpią znacznego aktywności We/Wy lub punkty aktywne.

Następujące kolumny służy do identyfikowania obszarów rywalizacja.

Do analizowania wspólnego wzorca dostępu do partycji tabela lub indeksie, za pomocą tych kolumn:

  • leaf_insert_count

  • leaf_delete_count

  • leaf_update_count

  • leaf_ghost_count

  • range_scan_count

  • singleton_lookup_count

Aby zidentyfikować latching i blokowanie rywalizacja, należy użyć tych kolumn:

  • page_latch_wait_count i page_latch_wait_in_ms

    Kolumny te wskazują, czy zatrzaśnięcie rywalizacja o indeksu lub stosu i istotność rywalizacja.

  • row_lock_count i page_lock_count

    Te kolumny wskazuje, ile razy Aparat baz danych próbował uzyskać blokady wiersza i strona .

  • row_lock_wait_in_ms i page_lock_wait_in_ms

    Te kolumny wskazują, czy blokada rywalizacja o indeksu lub stosu i istotność rywalizacja.

Do analizowania statystyk fizycznej we/wy na partycji indeksu lub sterty

  • page_io_latch_wait_count i page_io_latch_wait_in_ms

    Kolumny te wskazują, czy fizycznej we/wy zostały wystawione do indeksu lub sterty stron do pamięci i liczby operacji We/Wy zostały wydane.

Kolumna uwagi

Wartości w lob_orphan_create_count i lob_orphan_insert_count powinny być zawsze równe.

Wartości w kolumnach lob_fetch_in_pages i lob_fetch_in_bytes może być większa od zera do zbudowania indeksów, które zawierają jedną lub więcej kolumn LOB jako uwzględnionych kolumn.Aby uzyskać więcej informacji, zobacz Indeks z uwzględnionych kolumn.Podobnie, wartości w kolumnach row_overflow_fetch_in_pages i row_overflow_fetch_in_bytes może być większa od 0 do zbudowania indeksów nie klastrowanych, jeśli indeks zawiera kolumny, które może zostać przesunięta poza wiersz.Aby uzyskać więcej informacji, zobacz Przepełnienie wiersz danych powyżej 8 KB.

Jak zresetować liczniki pamięci podręcznej metadanych

Dane zwrócone przez sys.dm_db_index_operational_stats istnieje tylko tak długo, jak obiekt metadane reprezentuje sterty lub indeks jest dostępny.Te dane są trwałe ani transakcyjnie spójne.Oznacza to, że nie można używać tych liczników do ustalenia, czy indeks został wykorzystany, lub nie, lub kiedy ostatnio używany indeks.Aby uzyskać informacje na ten temat, zobacz sys.dm_db_index_usage_stats (języka Transact-SQL).

Wartości dla każdej kolumna są zestaw na zero przy każdym metadane dla stosu lub indeks jest umieszczany w metadane i statystyki są kumulowane, aż obiekt pamięci podręcznej jest usuwany z metadane .Dlatego sterty aktywny lub indeks prawdopodobne jest jego metadane w pamięci podręcznej i skumulowany licznik może odzwierciedlać działalności od momentu wystąpienie SQL Server ostatniego uruchomienia.metadane dla mniej aktywnych sterty lub indeksu zostaną przeniesione z pamięci podręcznej jest używany.W efekcie może lub nie może mieć wartości dostępne.Upuszczanie indeksu spowoduje, że odpowiednie statystyki usunięte z pamięci i nie jest już zgłoszonych przez funkcja.Inne operacje DDL indeksu może spowodować wartość statystyki mają być ustawiany na zero.

Wartości parametrów przy użyciu funkcji systemowych

Można użyć Transact-SQL Funkcje DB_ID i OBJECT_ID , aby określić wartość dla database_id i object_id Parametry.Przekazywanie wartości, które nie są prawidłowe, funkcje te może jednak powodować innych niepożądanych wyniki.Zawsze upewnij się, że zwracany jest prawidłowy identyfikator, za pomocą DB_ID lub OBJECT_ID.Aby uzyskać więcej informacji, zobacz sekcję Uwagi w sys.dm_db_index_physical_stats (języka Transact-SQL).

Uprawnienia

Wymaga następujących uprawnień:

  • Uprawnienie Kontrola określony obiekt w bazie danych

  • Zwraca informacje o wszystkich obiektach z określonej bazy danych przy użyciu symboli wieloznacznych obiektu @ uprawnienia stanu bazy danych w WIDOKUobject_id = NULL

  • Uprawnienie WYŚWIETL stan serwera zwraca informacje o wszystkich baz danych przy użyciu symboli wieloznacznych bazy danych @database_id = NULL

Przyznanie stan WIDOKU bazy danych umożliwia wszystkie obiekty w bazie danych powinny być zwrócone, niezależnie od wszelkich uprawnień kontroli odmowa na określonych obiektach.

Odmawianie stan WIDOKU bazy danych nie zezwala na wszystkie obiekty w bazie danych powinny być zwrócone, niezależnie od wszelkich kontroli uprawnień przyznanych na określonych obiektach.Także, jeśli symbol wieloznaczny bazy danych @database_id= określona wartość NULL, baza danych zostanie pominięty.

Aby uzyskać więcej informacji, zobacz Dynamiczne zarządzanie widoki i funkcje (Transact-SQL).

Przykłady

A.Zwrócenie informacji dotyczących określonej tabela

Poniższy przykład zwraca informacje dotyczące wszystkich indeksów i partycje o Person.Address tabela w AdventureWorks2008R2 bazy danych.Wykonywanie kwerendy tego wymaga, co najmniej uprawnienie Kontrola na Person.Address tabela.

Ważna informacjaWażne:

Kiedy używasz Transact-SQL Funkcje DB_ID i OBJECT_ID zwracają wartość parametru należy zawsze upewnić się że zwracany jest prawidłowy identyfikator.Jeśli nie można odnaleźć nazwy bazy danych lub obiekt, na przykład gdy nie istnieją lub są napisane błędnie, obie zwracają wartość NULL.sys.dm_db_index_operational_statsfunkcja interpretuje wartość NULL jako wartość symboli wieloznacznych, która określa wszystkie bazy danych lub wszystkich obiektów. Ponieważ może to być niezamierzoną, przykłady w tej sekcji wykazać bezpieczny sposób, aby określić bazę danych i identyfikatory obiektów.

DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address');
IF @db_id IS NULL 
  BEGIN;
    PRINT N'Invalid database';
  END;
ELSE IF @object_id IS NULL
  BEGIN;
    PRINT N'Invalid object';
  END;
ELSE
  BEGIN;
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
  END;
GO

B.Zwrócenie informacji dotyczących wszystkich tabel i indeksów

Poniższy przykład zwraca informacje dotyczące wszystkich tabel i indeksów w wystąpienie SQL Server.Wykonywanie kwerendy wymaga uprawnień WYŚWIETL stan serwera.

SELECT * FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);
GO