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.
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ż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
Zobacz także