Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az aktuális alsó szintű I/O-, zárolási, reteszelési és hozzáférési metódustevékenységet adja vissza az adatbázis egy táblájának vagy indexének minden partíciójára vonatkozóan.
A memóriaoptimalizált indexek nem jelennek meg ebben a DMV-ben.
Jegyzet
sys.dm_db_index_operational_stats nem ad vissza információt a memóriaoptimalizált indexekről. A memóriaoptimalizált indexhasználatról további információt a sys.dm_db_xtp_index_stats (Transact-SQL)című témakörben talál.
Transact-SQL szintaxis konvenciói
Szintaxis
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 }
)
Érvek
database_id | NULL | 0 | ALAPÉRTELMEZETT
Az adatbázis azonosítója.
Adja meg a NULL értéket az SQL Server-példányban lévő összes adatbázis adatainak visszaadásához. Ha null értéket ad meg database_id, akkor a null értéket is meg kell adnia object_id, index_idés partition_number.
Megadhatja a beépített DB_ID függvényt.
object_id | NULL | 0 | ALAPÉRTELMEZETT
A tábla objektumazonosítója vagy az index megtekintése be van kapcsolva. object_idint.
Az érvényes bemenetek egy tábla és nézet azonosítószáma, NULL, 0 vagy ALAPÉRTELMEZETT. Az alapértelmezett érték 0. A NULL, a 0 és a DEFAULT egyenértékű értékek ebben a környezetben.
Adja meg a NULL értéket a megadott adatbázis összes táblájának és nézetének gyorsítótárazott adatainak visszaadásához. Ha null értéket ad meg object_id, akkor a NULL értéket is meg kell adnia index_id és partition_number.
index_id | 0 | NULL | -1 | ALAPÉRTELMEZETT
Az index azonosítója. index_idint. Az érvényes bemenetek az index azonosítószáma, 0, ha object_id halom, NULL, -1 vagy ALAPÉRTELMEZETT. Az alapértelmezett érték a -1, a NULL, a -1 és az ALAPÉRTELMEZETT érték.
Adja meg a NULL értéket az alaptábla vagy nézet összes indexének gyorsítótárazott adatainak visszaadásához. Ha null értéket ad meg index_id, akkor a null értéket is meg kell adnia partition_number.
partition_number | NULL | 0 | ALAPÉRTELMEZETT
Partíciószám az objektumban. partition_numberint. Az érvényes bemenetek egy index vagy halom, NULL, 0 vagy DEFAULT partition_number. Az alapértelmezett érték 0. A NULL, a 0 és a DEFAULT egyenértékű értékek ebben a környezetben.
Adja meg a NULL értéket az index vagy halom összes partíciójának gyorsítótárazott adatainak visszaadásához.
partition_number 1-alapú. A nem particionált index vagy halom partition_number értéke 1.
Visszaadott tábla
| Oszlop neve | Adattípus | Leírás |
|---|---|---|
| database_id | kis | Adatbázis-azonosító. Az Azure SQL Database-ben az értékek egyediek egyetlen adatbázisban vagy rugalmas készletben, de nem logikai kiszolgálón belül. |
| object_id | A tábla vagy nézet azonosítója. | |
| index_id | Az index vagy a halom azonosítója. 0 = Halom |
|
| partition_number | 1-alapú partíciószám az indexben vagy halomban. | |
| hobt_id | bigint |
Az Azure SQL Database Az oszlopcentrikus index belső adatait nyomon író adat halom vagy B-fa sorkészlet azonosítója. NULL – ez nem egy belső oszlopcentrikus sorkészlet. További részletekért lásd: sys.internal_partitions (Transact-SQL) |
| leaf_insert_count | bigint | Levélszintű beszúrások kumulatív száma. |
| leaf_delete_count | bigint | Levélszintű törlések kumulatív száma. leaf_delete_count csak a nem szellemként megjelölt törölt rekordok esetében növekszik. Az elsőként szellemesített törölt rekordok esetében a leaf_ghost_count növekszik. |
| leaf_update_count | bigint | Levélszintű frissítések kumulatív száma. |
| leaf_ghost_count | bigint | A töröltként megjelölt, de még el nem távolított levélszintű sorok összesített száma. Ez a szám nem tartalmazza azokat a rekordokat, amelyeket a rendszer azonnal töröl anélkül, hogy szellemként jelölik meg őket. Ezeket a sorokat egy tisztítási szál a megadott időközönként eltávolítja. Ez az érték nem tartalmazza azokat a sorokat, amelyeket egy fennálló pillanatkép-elkülönítési tranzakció miatt megtartanak. |
| nonleaf_insert_count | bigint | A levélszint feletti beszúrások összesített száma. 0 = Halom vagy oszloptár |
| nonleaf_delete_count | bigint | A levélszint feletti törlések halmozott száma. 0 = Halom vagy oszloptár |
| nonleaf_update_count | bigint | A levélszint feletti frissítések halmozott száma. 0 = Halom vagy oszloptár |
| leaf_allocation_count | bigint | A levélszintű lapfoglalások összesített száma az indexben vagy halomban. Egy index esetében a lapfoglalás egy oldal felosztásának felel meg. |
| nonleaf_allocation_count | bigint | A levélszint feletti oldaleloszlások által okozott oldalfoglalások halmozott száma. 0 = Halom vagy oszloptár |
| leaf_page_merge_count | bigint | Az oldalegyesítések összesített száma a levél szintjén. Oszlopcentrikus index esetén mindig 0. |
| nonleaf_page_merge_count | bigint | A lapegyesítések összesített száma a levélszint felett. 0 = Halom vagy oszloptár |
| range_scan_count | bigint | Az indexen vagy halomon megkezdett tartomány- és táblavizsgálatok összesített száma. |
| singleton_lookup_count | bigint | Az indexből vagy halomból származó egysoros lekérések összesített száma. |
| forwarded_fetch_count | bigint | A továbbítási rekordon keresztül beolvasott sorok száma. 0 = Indexek |
| lob_fetch_in_pages | bigint | A LOB_DATA foglalási egységből lekért nagyméretű objektumlapok (LOB) összesített száma. Ezek a lapok olyan adatokat tartalmaznak, amelyek típusú szöveges, ntext, kép, varchar(max), nvarchar(max), varbinary(max)és xml. További információ: adattípusok (Transact-SQL). |
| lob_fetch_in_bytes | bigint | A lekért LOB-adatok összesített száma. |
| lob_orphan_create_count | bigint | A tömeges műveletekhez létrehozott árva LOB-értékek halmozott száma. 0 = Nemclustered index |
| lob_orphan_insert_count | bigint | A tömeges műveletek során beszúrt árva LOB-értékek halmozott száma. 0 = Nemclustered index |
| row_overflow_fetch_in_pages | bigint | A ROW_OVERFLOW_DATA foglalási egységből lekért sortúllépési adatlapok összesített száma. Ezek a lapok varchar(n), nvarchar(n), varbinary(n)és sql_variant oszlopban tárolt adatokat tartalmaznak. |
| row_overflow_fetch_in_bytes | bigint | A lekért sorok túlcsordult adatbájtjainak összesített száma. |
| column_value_push_off_row_count | bigint | Az oszlopértékek halmozott száma a LOB-adatokhoz és a sorról leküldéses túlcsordulási adatokhoz, hogy egy beszúrt vagy frissített sor elférjen egy oldalon belül. |
| column_value_pull_in_row_count | bigint | A sorba behúzott LOB-adatok és sorátfolyási adatok oszlopértékeinek halmozott száma. Ez akkor fordul elő, ha egy frissítési művelet helyet szabadít fel egy rekordban, és lehetővé teszi egy vagy több soron kívüli érték lekérését a LOB_DATA vagy ROW_OVERFLOW_DATA foglalási egységekből a IN_ROW_DATA foglalási egységbe. |
| row_lock_count | bigint | A kért sorzárolások összesített száma. |
| row_lock_wait_count | bigint | Halmozott hányszor várt az adatbázismotor egy sorzárolásra. |
| row_lock_wait_in_ms | bigint | Az adatbázismotor által várt sorzárolások teljes száma ezredmásodpercben. |
| page_lock_count | bigint | A kért oldalzárolások összesített száma. |
| page_lock_wait_count | bigint | Kumulatív hányszor várt az adatbázismotor az oldalzárolásra. |
| page_lock_wait_in_ms | bigint | Az adatbázismotor által az oldalzárolásra várt ezredmásodpercek teljes száma. |
| index_lock_promotion_attempt_count | bigint | Kumulatív hányszor próbálta az adatbázismotor eszkalálni a zárolásokat. |
| index_lock_promotion_count | bigint | Az adatbázismotor eszkalált zárolásainak halmozott száma. |
| page_latch_wait_count | bigint | Kumulatív hányszor várt az adatbázismotor a reteszes versengés miatt. |
| page_latch_wait_in_ms | bigint | Az adatbázismotor által várt ezredmásodpercek halmozott száma a reteszes versengés miatt. |
| page_io_latch_wait_count | bigint | Kumulatív hányszor várt az adatbázismotor egy I/O-lapzárlatra. |
| page_io_latch_wait_in_ms | bigint | Az adatbázismotor által várt ezredmásodpercek halmozott száma egy oldal I/O-reteszén. |
| tree_page_latch_wait_count | bigint | A page_latch_wait_count részhalmaza, amely csak a felső szintű B-fa oldalakat tartalmazza. Mindig 0 egy halom vagy oszlopcentrikus index esetén. |
| tree_page_latch_wait_in_ms | bigint | A page_latch_wait_in_ms részhalmaza, amely csak a felső szintű B-fa oldalakat tartalmazza. Mindig 0 egy halom vagy oszlopcentrikus index esetén. |
| tree_page_io_latch_wait_count | bigint | A page_io_latch_wait_count részhalmaza, amely csak a felső szintű B-fa oldalakat tartalmazza. Mindig 0 egy halom vagy oszlopcentrikus index esetén. |
| tree_page_io_latch_wait_in_ms | bigint | A page_io_latch_wait_in_ms részhalmaza, amely csak a felső szintű B-fa oldalakat tartalmazza. Mindig 0 egy halom vagy oszlopcentrikus index esetén. |
| page_compression_attempt_count | bigint | A táblázat, index vagy indexelt nézet adott partícióinak PAGE szintű tömörítéséhez kiértékelt lapok száma. Olyan oldalakat is tartalmaz, amelyek nem lettek tömörítve, mert jelentős megtakarítás nem érhető el. Oszlopcentrikus index esetén mindig 0. |
| page_compression_success_count | bigint | A táblázat, index vagy indexelt nézet adott partícióihoz laptömörítéssel tömörített adatlapok száma. Oszlopcentrikus index esetén mindig 0. |
Jegyzet
A dokumentáció általában a B-fa kifejezést használja az indexekre hivatkozva. A sorkataszterekben az adatbázismotor egy B+ fát implementál. Ez nem vonatkozik az oszlopcentrikus indexekre vagy a memóriaoptimalizált táblák indexére. További információ: SQL Server és Azure SQL index architektúrája és tervezési útmutatója.
Megjegyzések
Ez a dinamikus felügyeleti objektum nem fogad el korrelált paramétereket CROSS APPLY és OUTER APPLY.
A sys.dm_db_index_operational_stats segítségével nyomon követheti, hogy a felhasználóknak mennyi ideig kell várniuk a táblák, indexek vagy partíciók olvasására vagy írására, és azonosíthatják azokat a táblákat vagy indexeket, amelyek jelentős I/O-tevékenységet vagy gyakori pontokat tapasztalnak.
A versengés területeinek azonosításához használja az alábbi oszlopokat.
A tábla- vagy indexpartíciósáltalános hozzáférési mintájának elemzéséhez használja az alábbi oszlopokat:
leaf_insert_count
leaf_delete_count
leaf_update_count
leaf_ghost_count
range_scan_count
singleton_lookup_count
A reteszelés és a zárolási versengés azonosításához használja az alábbi oszlopokat:
page_latch_wait_count és page_latch_wait_in_ms
Ezek az oszlopok jelzik, hogy van-e reteszelési versengés az indexen vagy a halomon, valamint a versengés jelentőségét.
row_lock_count és page_lock_count
Ezek az oszlopok azt jelzik, hogy az adatbázismotor hányszor próbált sor- és oldalzárolásokat szerezni.
row_lock_wait_in_ms és page_lock_wait_in_ms
Ezek az oszlopok jelzik, hogy van-e zárolási versengés az indexen vagy a halomon, valamint a versengés jelentőségét.
A fizikai I/Os statisztikáinak elemzése index- vagy halompartíción
page_io_latch_wait_count és page_io_latch_wait_in_ms
Ezek az oszlopok azt jelzik, hogy az index- vagy halomlapok memóriába helyezéséhez fizikai I/OS-t adtak-e ki, és hogy hány I/OS-t adtak ki.
Oszlop megjegyzései
A lob_orphan_create_count és lob_orphan_insert_count értékeinek mindig egyenlőnek kell lenniük.
A lob_fetch_in_pages és a lob_fetch_in_bytes oszlopban lévő érték nullánál nagyobb lehet az egy vagy több LOB oszlopot belefoglalt oszlopként tartalmazó nemclustered indexek esetében. További információ: Indexek létrehozása belefoglalt oszlopokkal. Hasonlóképpen, a row_overflow_fetch_in_pages és row_overflow_fetch_in_bytes oszlopok értéke 0-nál nagyobb lehet a nem rendezett indexek esetében, ha az index olyan oszlopokat tartalmaz, amelyek leküldhetők a sorból.
A metaadat-gyorsítótár számlálóinak alaphelyzetbe állítása
A sys.dm_db_index_operational_stats által visszaadott adatok csak addig léteznek, amíg a halom vagy indexet jelképező metaadat-gyorsítótár-objektum elérhető. Ezek az adatok nem állandók és nem tranzakciós konzisztensek. Ez azt jelenti, hogy nem használhatja ezeket a számlálókat annak megállapítására, hogy használták-e az indexet, vagy mikor használták utoljára az indexet. Erről további információt a sys.dm_db_index_usage_stats (Transact-SQL)című témakörben talál.
Az egyes oszlopok értékei nullára vannak állítva, amikor a halom vagy az index metaadatai bekerülnek a metaadat-gyorsítótárba, és a statisztikák mindaddig halmozódnak fel, amíg el nem távolítják a gyorsítótár-objektumot a metaadat-gyorsítótárból. Ezért az aktív halom vagy index valószínűleg mindig a metaadataival rendelkezik a gyorsítótárban, és az összegző számok a tevékenységet tükrözhetik, mivel az SQL Server-példányt utoljára elindították. A kevésbé aktív halom vagy index metaadatai használat közben a gyorsítótárba kerülnek és kifelé kerülnek. Ennek eredményeképpen előfordulhat, hogy az értékek elérhetők vagy nem érhetők el. Az index elvetésével a megfelelő statisztikák el lesznek távolítva a memóriából, és a függvény már nem jelenti őket. Az indexen végzett egyéb DDL-műveletek miatt a statisztika értéke nullára állítható vissza.
Paraméterértékek megadása rendszerfüggvényekkel
A Transact-SQL függvények DB_ID és OBJECT_ID használatával megadhatja a database_id és object_id paraméterek értékét. A függvények számára érvénytelen értékek átadása azonban nem várt eredményeket okozhat. Mindig győződjön meg arról, hogy érvényes azonosítót ad vissza DB_ID vagy OBJECT_ID használatakor. További információ: sys.dm_db_index_physical_stats (Transact-SQL)Megjegyzések szakasza.
Engedélyek
A következő engedélyek szükségesek:
CONTROLaz adatbázis megadott objektumára vonatkozó engedélytVIEW DATABASE STATEvagyVIEW DATABASE PERFORMANCE STATE(SQL Server 2022) engedély a megadott adatbázis összes objektumára vonatkozó adatok visszaadására a @object_id = NULL objektum helyettesítő karakterévelVIEW SERVER STATEVIEW SERVER PERFORMANCE STATE(SQL Server 2022) engedély az összes adatbázis adatainak visszaadására az adatbázis helyettesítő karakterével @database_id = NULL
A VIEW DATABASE STATE megadása lehetővé teszi az adatbázis összes objektumának visszaadását, függetlenül attól, hogy a CONTROL-engedélyek adott objektumokra vonatkozóan megtagadva vannak-e.
A VIEW DATABASE STATE megtagadása letiltja az adatbázis összes objektumának visszaadását, függetlenül attól, hogy az adott objektumokhoz adott CONTROL-engedélyek vannak-e megadva. Ha az adatbázis helyettesítő karaktere @database_id=NULL van megadva, az adatbázis nem lesz megadva.
További információ: Dinamikus felügyeleti nézetek és függvények (Transact-SQL).
Példák
Egy. Adott tábla adatainak visszaadása
A következő példa az AdventureWorks2025 adatbázis összes indexére és partíciójára Person.Address vonatkozó információkat adja vissza. A lekérdezés végrehajtásához legalább a CONTROL engedélyre van szükség Person.Address táblában.
Fontos
Ha a Transact-SQL függvényt DB_ID és OBJECT_ID paraméterérték visszaadásához használja, mindig győződjön meg arról, hogy érvényes azonosítót ad vissza. Ha az adatbázis vagy az objektum neve nem található, például ha nem léteznek, vagy helytelenül vannak beírva, mindkét függvény NULL értéket ad vissza. A sys.dm_db_index_operational_stats függvény a NULL értéket helyettesítő karakterként értelmezi, amely az összes adatbázist vagy objektumot meghatározza. Mivel ez nem szándékos művelet lehet, az ebben a szakaszban szereplő példák bemutatják az adatbázis- és objektumazonosítók biztonságos meghatározásának módját.
DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2022');
SET @object_id = OBJECT_ID(N'AdventureWorks2022.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. Az összes tábla és index adatainak visszaadása
Az alábbi példa az SQL Server-példányon belüli összes táblára és indexre vonatkozó információkat adja vissza. A lekérdezés végrehajtásához MEGTEKINTÉSI KISZOLGÁLÓ ÁLLAPOTA engedély szükséges.
SELECT * FROM sys.dm_db_index_operational_stats( NULL, NULL, NULL, NULL);
GO
Lásd még:
dinamikus felügyeleti nézetek és függvények (Transact-SQL)
indexelt dinamikus felügyeleti nézetek és függvények (Transact-SQL)
Monitorozás és hangolás teljesítmény
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.indexes (Transact-SQL)