Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Vrátí statistiku přístupu k datům nižší úrovně, zamykání a západky pro každý oddíl tabulky nebo indexu v databázi.
Syntax
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 | NULOVÁ | 0 | DEFAULT }
ID databáze.
database_id je malý. Platné vstupy jsou ID číslo databáze, NULL, 0, nebo DEFAULT. Výchozí hodnota je 0.
NULL, 0a DEFAULT jsou v tomto kontextu ekvivalentní hodnoty.
Zadejte NULL k vrácení informací pro všechny databáze v instanci SQL Serveru. Pokud zadáte NULL pro database_id, musíte také zadat NULL pro object_id, index_ida partition_number.
Lze zadat předdefinovanou funkci DB_ID.
{ object_id | NULA | 0 | DEFAULT }
ID objektu tabulky nebo zobrazení indexu je zapnuté. object_id je .
Platné vstupy jsou ID číslo tabulky a zobrazení, NULL, 0, nebo DEFAULT. Výchozí hodnota je 0.
NULL, 0a DEFAULT jsou v tomto kontextu ekvivalentní hodnoty.
Zadejte NULL pro vrácení informací pro všechny tabulky a zobrazení v zadané databázi. Pokud zadáte NULL pro object_id, musíte také zadat NULL pro index_id a partition_number.
{ index_id | 0 | NULOVÁ | -1 | DEFAULT }
ID indexu.
index_id je inteligence. Platné vstupy jsou ID číslo indexu, 0 pokud je object_id halda, NULL, -1, nebo DEFAULT. Výchozí hodnota je -1.
NULL, -1a DEFAULT jsou v tomto kontextu ekvivalentní hodnoty.
Zadejte NULL k vrácení informací pro všechny indexy základní tabulky nebo zobrazení. Pokud zadáte NULL pro index_id, musíte také zadat NULL pro partition_number.
{ partition_number | NULA | 0 | DEFAULT }
Číslo oddílu v objektu.
partition_number je . Platné vstupy jsou partition_number indexu nebo haldy, NULL, 0nebo DEFAULT. Výchozí hodnota je 0.
NULL, 0a DEFAULT jsou v tomto kontextu ekvivalentní hodnoty.
Specifikujte NULL tak, aby vracela informace pro všechny oddíly indexu nebo haldy.
partition_number je založená na 1. Nedílný index nebo halda má partition_number nastaven na hodnotu 1.
Vrácená tabulka
| Název sloupce | Datový typ | Description |
|---|---|---|
database_id |
smallint | ID databáze. Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru. |
object_id |
int | ID tabulky nebo zobrazení. Pro více informací viz sys.objects. |
index_id |
int | ID indexu nebo haldy. Pro více informací viz sys.indexes. |
partition_number |
int | Číslo oddílu založené na 1 v indexu nebo haldě. Pro více informací viz sys.partitions. |
hobt_id |
bigint | ID haldy dat nebo sady řádků stromu B, která sleduje interní data pro index columnstore.NULL - Toto není interní řádková sada columnstore.Další informace najdete v tématu sys.internal_partitions. |
leaf_insert_count |
bigint | Kumulativní počet vložení na úrovni listu Další informace o úrovních indexů najdete v průvodci architekturou a návrhem indexu. |
leaf_delete_count |
bigint | Kumulativní počet odstranění na úrovni listu
leaf_delete_count se zvyšuje pouze u smazaných záznamů, které nejsou označeny jako duchové. U odstraněných záznamů, které jsou nejprve stíněné, leaf_ghost_count se místo toho zvýší. |
leaf_update_count |
bigint | Kumulativní počet aktualizací na úrovni listu. |
leaf_ghost_count |
bigint | Kumulativní počet řádků na úrovni listu, které jsou označené jako odstraněné, ale ještě neodebrané. Tento počet nezahrnuje záznamy, které jsou okamžitě smazány, aniž by byly označeny jako duchové. Vlákno čištění odebere řádky duchů v nastavených intervalech. Tato hodnota nezahrnuje duchové řádky, které jsou zachovány kvůli nevyřízené transakci snapshotu. |
nonleaf_insert_count |
bigint | Kumulativní počet vložení nad úrovní listu. Platí jenom pro indexy B-tree. 0 pro haldy nebo indexy columnstore. |
nonleaf_delete_count |
bigint | Kumulativní počet odstranění nad úrovní listu. Platí jenom pro indexy B-tree. 0 pro haldy nebo indexy columnstore. |
nonleaf_update_count |
bigint | Kumulativní počet aktualizací nad úrovní listu. Platí jenom pro indexy B-tree. 0 pro haldy nebo indexy columnstore. |
leaf_allocation_count |
bigint | Kumulativní počet přidělení stránek na úrovni listu v indexu nebo haldě Pro index odpovídá přidělení stránky rozdělení stránky. |
nonleaf_allocation_count |
bigint | Kumulativní počet přidělení stránek způsobených rozděleními stránek nad úrovní listu Platí jenom pro indexy B-tree. 0 pro haldy nebo indexy columnstore. |
leaf_page_merge_count |
bigint | Kumulativní počet sloučení stránek na úrovni listu Vždy 0 pro indexy columnstore. |
nonleaf_page_merge_count |
bigint | Kumulativní počet sloučení stránek nad úrovní listu Platí jenom pro indexy B-tree. 0 pro haldy nebo indexy columnstore. |
range_scan_count |
bigint | Kumulativní počet kontrol rozsahu a tabulek zahájených v indexu nebo haldě |
singleton_lookup_count |
bigint | Kumulativní počet načtení jednoho řádku z indexu nebo haldy |
forwarded_fetch_count |
bigint | Počet řádků, které byly načteny přes záznam pro přeposílání Platí pouze pro haldy, 0 pro indexy B-strom. |
lob_fetch_in_pages |
bigint | Kumulativní počet velkých objektů (LOB) stránek načtených z LOB_DATA alokační jednotky Tyto stránky obsahují data uložená ve sloupcích typu text, ntext, image, varchar(max),nvarchar(max),varbinary(max),xml a json. Další informace naleznete v tématu Datové typy. |
lob_fetch_in_bytes |
bigint | Kumulativní počet načtených bajtů obchodních dat |
lob_orphan_create_count |
bigint | Kumulativní počet osamocených hodnot LOB vytvořených pro hromadné operace Platí pouze pro haldy a clusterované indexy B-tree, 0 pro neclusterované indexy a indexy columnstore. |
lob_orphan_insert_count |
bigint | Kumulativní počet osamocených hodnot LOB vložených během hromadných operací. Platí pouze pro haldy a clusterované indexy B-tree, 0 pro neclusterované indexy a indexy columnstore. |
row_overflow_fetch_in_pages |
bigint | Kumulativní početdatových ROW_OVERFLOW_DATATyto stránky obsahují data uložená ve sloupcích typu varchar(n), nvarchar(n), varbinary(n)a sql_variant pro velké řádky. |
row_overflow_fetch_in_bytes |
bigint | Kumulativní počet načtených bajtů dat přetečení řádků |
column_value_push_off_row_count |
bigint | Kumulativní počet hodnot sloupců pro obchodní data a data přetečení řádků, která se odsunou mimo řádek, aby se vložený nebo aktualizovaný řádek vešly do stránky. |
column_value_pull_in_row_count |
bigint | Kumulativní počet hodnot sloupců pro obchodní data a přetečení řádků, která se načítají v řádku. K tomu dochází, když operace aktualizace uvolní místo v záznamu a poskytuje možnost vyžádat si jednu nebo více hodnot mimo řádek z LOB_DATA jednotky přidělení nebo ROW_OVERFLOW_DATA jednotky přidělení do IN_ROW_DATA alokační jednotky. |
row_lock_count |
bigint | Kumulativní počet požadovaných zámků řádků |
row_lock_wait_count |
bigint | Kumulativní počet, kolikrát databázový stroj čekal na uzamčení řádku |
row_lock_wait_in_ms |
bigint | Celkový počet milisekund, které databázový stroj čekal na uzamčení řádku |
page_lock_count |
bigint | Kumulativní počet požadovaných zámků stránky |
page_lock_wait_count |
bigint | Kumulativní počet, kolikrát databázový stroj čekal na uzamčení stránky |
page_lock_wait_in_ms |
bigint | Celkový počet milisekund, na který databázový stroj čekal na zámek stránky. |
index_lock_promotion_attempt_count |
bigint | Kumulativní počet pokusů databázového stroje o eskalaci zámků |
index_lock_promotion_count |
bigint | Kumulativní počet eskalovaných zámků databázového stroje |
page_latch_wait_count |
bigint | Kumulativní počet, kolikrát databázový stroj čekal na získání západky |
page_latch_wait_in_ms |
bigint | Kumulativní počet milisekund databázový stroj čekal na získání západky. |
page_io_latch_wait_count |
bigint | Kumulativní počet, kolikrát databázový stroj čekal na vstupně-výstupní západku stránky |
page_io_latch_wait_in_ms |
bigint | Kumulativní počet milisekund, na které databázový stroj čekal na vstupně-výstupní západku stránky. |
tree_page_latch_wait_count |
bigint | Podmnožina page_latch_wait_count , která obsahuje pouze stránky B-stromové struktury vyšší úrovně. Vždy 0 pro haldu nebo index columnstore. |
tree_page_latch_wait_in_ms |
bigint | Podmnožina page_latch_wait_in_ms , která obsahuje pouze stránky B-stromové struktury vyšší úrovně. Vždy 0 pro haldu nebo index columnstore. |
tree_page_io_latch_wait_count |
bigint | Podmnožina page_io_latch_wait_count , která obsahuje pouze stránky B-stromové struktury vyšší úrovně. Vždy 0 pro haldu nebo index columnstore. |
tree_page_io_latch_wait_in_ms |
bigint | Podmnožina page_io_latch_wait_in_ms , která obsahuje pouze stránky B-stromové struktury vyšší úrovně. Vždy 0 pro haldu nebo index columnstore. |
page_compression_attempt_count |
bigint | Počet stránek, které byly vyhodnoceny pro PAGE kompresi úrovní pro konkrétní oddíl tabulky, indexu nebo indexovaného pohledu. Obsahuje stránky, které nebyly komprimovány, protože nebylo možné dosáhnout výrazných úspor. Vždy 0 pro indexy columnstore. |
page_compression_success_count |
bigint | Počet datových stránek, které byly komprimovány pomocí PAGE komprese pro konkrétní oddíly tabulky, indexu nebo indexovaného pohledu. Vždy 0 pro indexy columnstore. |
version_generated_inrow |
bigint | Kumulativní počet verzí v řádku s datovou částí vygenerovanou v haldě nebo B-tree pro operaci aktualizace, sloučení nebo vložení přes stín. Verze v řádku ukládá starý obrázek řádku (nebo rozdíl) přímo v řádku, aby nedocházelo k cestě do úložiště verzí. Tento počet je nadmnožina, která zahrnuje verze počítané podle insert_over_ghost_version_inrow. Další informace overzích |
version_generated_offrow |
bigint | Kumulativní počet verzí odsílaných do úložiště mimo řádky pro haldu, B-strom nebo odstranění obchodního objektu, aktualizaci, sloučení nebo operaci vložení přes stínovou kopii. Verze mimo řádek se vygeneruje, když starý obrázek řádku nelze uchovat v řádku. Tento počet je nadmnožina, která zahrnuje verze počítané podle ghost_version_offrow a insert_over_ghost_version_offrow. |
ghost_version_inrow |
bigint | Kumulativní počet časů odstranění nebo aktualizace (provedené jako odstranění následované vložením) označil existující řádek jako duch s informacemi o správě verzí v řádku. Verze v řádku ukládá pouze časové razítko transakce a datovou část nulové délky, takže vrácení odstranění zpět vyžaduje pouze zrušení hostitele řádku. |
ghost_version_offrow |
bigint | Kumulativní počet pokusů o odstranění nebo aktualizaci (provedenou jako odstranění následované vložením) vložil existující data sloupců řádků nebo obchodních sloupců do úložiště mimo řádky, takže v řádku pro informace o správě verzí zůstane zástupný procedura. Tento čítač se zvýší společně s version_generated_offrow během operací duchů. |
insert_over_ghost_version_inrow |
bigint | Kumulativní počet verzí v řádku s datovou částí vygenerovanou pro operaci vkládání přes stínovou část B-tree. K stínování vložení dojde, když se nový řádek vloží do slotu dříve stínovaného záznamu, a to buď z explicitního odstranění následovaného vložením, nebo z aktualizace nebo sloučení implementované jako odstranění následované vložením. Tento čítač je podmnožinou .version_generated_inrow |
insert_over_ghost_version_offrow |
bigint | Kumulativní počet, kolikrát byl existující řádek duchů vložen do úložiště mimo řádky během operace vložení do stromu B,over-ghost, a ponechání zástupných procedur na nově vložený řádek pro informace o správě verzí. Tento čítač je podmnožinou .version_generated_offrow |
compaction_attempt_count |
bigint | Kumulativní počet pokusů o automatickou kompakci indexem. Pro více informací viz Automatická indexová komplikace. |
compaction_complete_count |
bigint | Souhrnný počet dokončených automatických kompakcí indexu. |
compaction_skip_count |
bigint | Kumulativní počet automatických kompakcí přeskočených indexů. Pro více informací o důvodech přeskakování viz Použití rozšířené události ke sledování statistik zhutnění. |
compaction_ineligible_count |
bigint | Kumulativní počet pokusů o zhutnění byl přeskočen, protože stránka nebyla způsobilá pro automatickou kompakci. |
compaction_failure_count |
bigint | Souhrnný počet neúspěšných pokusů o zhutnění. |
compaction_row_move_count |
bigint | Souhrn řádků přesunutých z jedné stránky na druhou v rámci automatické kompaktace. |
compaction_page_deallocation_count |
bigint | Souhrnný počet stránek, které byly po přesunu všech řádků na jinou stránku odvolány. |
Note
Dokumentace používá termín B-tree obecně v odkazu na indexy. V indexech rowstore databázový stroj implementuje strom B+. To neplatí pro indexy columnstore ani indexy v tabulkách optimalizovaných pro paměť. Další informace najdete v SQL Serveru a architektuře indexu Azure SQL a průvodci návrhem.
Poznámky
Tato funkce nevrací informace o indexech v tabulkách optimalizovaných pro paměť. Pro informace o indexech v tabulkách optimalizovaných pro paměť viz sys.dm_db_xtp_index_stats.
Tato funkce nepřijímá korelované parametry z CROSS APPLY a OUTER APPLY.
Můžete použít sys.dm_db_index_operational_stats ke sledování statistik operací čtení a zápisu dat a uzamčení, západky stránky a západky stránek a vstupně-výstupních operací pro tabulku, index nebo oddíl. Můžete identifikovat tabulky, indexy a oddíly, u kterých dochází k významné aktivitě nebo kolizím.
Statistiky jsou poskytovány na úrovni oddílu a jsou součtené. To znamená, že můžete získat statistiky na úrovni indexu nebo tabulky napsáním agregačního dotazu v jazyce T-SQL. Další informace najdete v příkladu vyhledávání indexů a hledání všech tabulek .
Pokud chcete analyzovat statistiky operací čtení a zápisu pro tabulku, index nebo oddíl, použijte tyto sloupce:
leaf_insert_countleaf_delete_countleaf_update_countleaf_ghost_countrange_scan_countsingleton_lookup_count
K identifikaci kolize západek použijte tyto sloupce:
page_latch_wait_countpage_latch_wait_in_ms
K identifikaci kolizí zámků použijte tyto sloupce:
row_lock_countpage_lock_countrow_lock_wait_in_mspage_lock_wait_in_ms
Pokud chcete analyzovat fyzické vstupně-výstupní statistiky, použijte tyto sloupce:
page_io_latch_wait_countpage_io_latch_wait_in_ms
Poznámky ke sloupcům
Hodnoty ve sloupcích lob_fetch_in_pages a lob_fetch_in_bytes mohou být větší než nula pro neclusterované indexy, které obsahují jeden nebo více sloupců LOB jako zahrnuté sloupce. Další informace najdete v tématu Vytváření indexů se zahrnutými sloupci. Podobně hodnoty ve sloupcích row_overflow_fetch_in_pages mohou row_overflow_fetch_in_bytes být větší než 0 pro neclusterované indexy, pokud index obsahuje velké řádky.
Jak se čítače v mezipaměti metadat resetují
Vrácená sys.dm_db_index_operational_stats data existují pouze za předpokladu, že je k dispozici objekt mezipaměti metadat, který představuje haldu nebo strom B. Tato data nejsou trvalá. To znamená, že tyto čítače nelze jednoznačně určit, zda byl index použit, nebo kdy byl naposledy použit. Místo toho použijte sys.dm_db_index_usage_stats.
Hodnoty pro každý číselný sloupec jsou nastaveny na nulu, kdykoli se metadata haldy nebo B-tree přenesou do mezipaměti metadat. Statistiky se shromažďují, dokud se objekt mezipaměti neodebere z mezipaměti metadat. Aktivní halda nebo B-strom obvykle obsahuje metadata v mezipaměti a kumulativní počty odrážejí aktivitu od posledního spuštění instance databázového stroje. Metadata méně aktivní haldy nebo B-stromu se mohou v mezipaměti pohybovat dovnitř a ven z mezipaměti, zejména pokud je instance Database Engine pod tlakem paměti. V důsledku toho se provozní statistika indexu někdy nemusí promítnout do sys.dm_db_index_operational_stats. To není běžné.
Statistiky se z mezipaměti odeberou a tato funkce už je neoznamuje, pokud dojde k vyřazení tabulky nebo indexu nebo zkrácení oddílu. Jiné operace DDL s indexem můžou způsobit resetování hodnoty statistiky na nulu.
Určení hodnot parametrů pomocí systémových funkcí
Pomocí funkcí Transact-SQL DB_ID a OBJECT_ID můžete zadat hodnotu parametrů database_id a object_id. Nicméně předávání hodnot, které nejsou platné, těmto funkcím může způsobit nechtěné výsledky. Vždy se ujistěte, že je vráceno platné ID při použití DB_ID nebo OBJECT_ID. Další informace najdete v tématu Vrácení informací pro zadanou tabulku.
Povolení
Vyžaduje následující oprávnění:
CONTROLoprávnění k zadanému objektu v databáziVIEW DATABASE STATEVIEW DATABASE PERFORMANCE STATEnebo povolení vracet informace o všech objektech ve specifikované databázi, pokud není určena hodnota pro@object_id.VIEW SERVER STATEneboVIEW SERVER PERFORMANCE STATEpovolení vracet informace o všech databázích, pokud není určena hodnota pro@database_id.
Udělení nebo VIEW DATABASE STATE povolení VIEW SERVER PERFORMANCE STATE vrácení všech objektů v databázi bez ohledu na všechna CONTROL oprávnění odepřena pro konkrétní objekty.
Odepřít VIEW DATABASE STATE nebo VIEW SERVER PERFORMANCE STATE zakázat vrácení všech objektů v databázi bez ohledu na všechna CONTROL oprávnění udělená konkrétním objektům.
Pro více informací viz pohledy a funkce dynamického řízení systému.
Examples
Vrácení informací pro zadanou tabulku
Následující příklad vrací informace o všech indexech a oddílech tabulky Person.Address v databázi AdventureWorks2025.
Important
Když používáte Transact-SQL funkce DB_ID a OBJECT_ID chcete vrátit hodnotu parametru, vždy se ujistěte, že je vráceno platné ID. Pokud nelze najít název databáze nebo objektu, například pokud neexistují nebo jsou nesprávně napsané, vrátí NULLse obě funkce . Funkce sys.dm_db_index_operational_stats interpretuje NULL jako hodnotu se zástupným znakem, která určuje všechny databáze nebo všechny objekty. Vzhledem k tomu, že to může být neúmyslná operace, příklady v této části ukazují bezpečný způsob, jak určit ID databáze a objektů.
DECLARE @db_id AS INT = DB_ID(N'AdventureWorks2025');
DECLARE @object_id AS INT = OBJECT_ID(N'AdventureWorks2025.Person.Address');
SELECT *
FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL)
WHERE @db_id IS NOT NULL
AND @object_id IS NOT NULL;
Vrácení informací pro všechny tabulky a indexy
Následující příklad vrátí informace pro všechny tabulky a indexy v instanci databázového stroje.
SELECT *
FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);
Vyhledávání a vyhledávání indexů pro všechny tabulky
Následující příklad agreguje data na úrovni oddílů, aby vrátila hledání indexu a prohledá statistiky pro všechny tabulky v aktuální databázi.
SELECT OBJECT_SCHEMA_NAME(object_id) AS schema_name,
OBJECT_NAME(object_id) AS object_name,
COUNT(DISTINCT(index_id)) AS index_count,
COUNT(DISTINCT(partition_number)) AS partition_count,
SUM(range_scan_count) AS index_scan_count,
SUM(singleton_lookup_count) AS index_seek_count
FROM sys.dm_db_index_operational_stats(DB_ID(), DEFAULT, DEFAULT, DEFAULT)
GROUP BY OBJECT_SCHEMA_NAME(object_id),
OBJECT_NAME(object_id)
ORDER BY schema_name, object_name;
Související obsah
- Pohledy a funkce dynamického řízení systému
- Zobrazení a funkce dynamické správy související s indexy (Transact-SQL)
- Monitorování a ladění výkonu
- sys.dm_db_index_physical_stats (Transact-SQL)
-
sys.dm_db_index_usage_stats (Transact-SQL) -
sys.dm_os_latch_stats (Transact-SQL) - sys.dm_db_partition_stats (Transact-SQL)
- sys.allocation_units (Transact-SQL)
- sys.partitions (Transact-SQL)
- sys.indexes (Transact-SQL)