Megosztás a következőn keresztül:


sys.dm_os_latch_stats (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Információkat ad vissza az összes záró várakozásról, osztályonként rendezve.

Megjegyzés:

Ha ezt Azure Synapse Analytics vagy Analytics Platform System (PDW) néven nevezzük, használd a sys.dm_pdw_nodes_os_latch_stats nevet. Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Oszlop név Adattípus Description
latch_class nvarchar(60) A záróosztály neve.
waiting_requests_count bigint A záraknál töltött idők száma ebben az órában. Ez a számláló a reteszes várakozás kezdetekor növekszik.
wait_time_ms bigint A teljes várakozási idő ezredmásodpercekben a záraknál ebben az órában.

Jegyzet: Ez az oszlop ötpercenként frissül a zárás várakozás alatt és a zárolás végén.
max_wait_time_ms bigint Maximális idő, amit egy memóriaobjektum várt ezen a repen. Ha ez az érték szokatlanul magas, az belső holtpontra utalhat.
pdw_node_id int A következővonatkozik: Azure Synapse Analytics, Analytics Platform System (PDW)

Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

Permissions

Az SQL Serveren és a felügyelt SQL-példányon VIEW SERVER STATE engedély szükséges.

Az SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.

Megjegyzések

sys.dm_os_latch_stats segítségével azonosítani a latch vita forrását a különböző latch osztályok relatív várakozási számainak és várakozási időinek vizsgálatával. Bizonyos helyzetekben előfordulhat, hogy megoldható vagy csökkenthető a zár elleni konfliktus. Előfordulhatnak azonban olyan helyzetek, amelyek miatt kapcsolatba kell lépnie a Microsoft ügyfélszolgálatával.

A sys.dm_os_latch_stats tartalmát a DBCC SQLPERF következőképpen állíthatod vissza:

DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);  
GO  

Ez az összes számlálót 0-ra állítja vissza.

Megjegyzés:

Ezek a statisztikák nem maradnak meg, ha az SQL Server újraindul. Minden adat kumulatív a statisztikák legutóbbi visszaállítása vagy az SQL Server elindítása óta.

Latches

A latch egy belső, könnyű szinkronizációs objektum, amely hasonlít a zároláshoz, és amelyet különböző SQL Server komponensek használnak. A latch elsősorban az adatbázis oldalak szinkronizálására szolgál olyan műveletek során, mint a puffer vagy fájlhozzáférés. Minden zár egyetlen allokációs egységhez kapcsolódik.

A latch wait akkor történik, amikor a latch request nem engedélyezhető azonnal, mert a latch egy másik szál tartja ellentmondásos módban. A zárokkal ellentétben a zár azonnal a művelet után szabadul ki, még írásos műveletekben is.

A recepciókat az összetevők és használat alapján osztályokba sorolják. Egy adott osztályból nulla vagy több zárás is létezhet bármely időpontban egy SQL Server példányban.

Megjegyzés:

sys.dm_os_latch_stats Nem követi azokat a latch kéréseket, amelyeket azonnal engedélyeztek, vagy amelyek várakozás nélkül meghiúsultak.

Az alábbi táblázat rövid leírásokat tartalmaz a különböző relatch-osztályokról.

Latch osztály Description
ALLOC_CREATE_RINGBUF Az SQL Server belsőleg használja az allokációs gyűrűpuffer létrehozásának szinkronizálásának inicializálására.
ALLOC_CREATE_FREESPACE_CACHE A belső szabad tér gyorstárok szinkronizálására szolgál halomokhoz.
ALLOC_CACHE_MANAGER Belső koherenciatesztek szinkronizálására szolgál.
ALLOC_FREESPACE_CACHE Arra használják, hogy szinkronizálják a gyorsítótárhoz való hozzáférést, ahol rendelkezésre áll a halmok és bináris nagy objektumok (BLOB) számára. A zárakról szóló vita akkor fordulhat elő, amikor több kapcsolat egyszerre próbál sorokat behelyezni egy halomba vagy BLOB-ba. Ezt a vitát csökkentheted az objektum partíciójával. Minden partíciónak megvan a maga zára. A partíció több zár között osztja el a betéteket.
ALLOC_EXTENT_CACHE Arra használják, hogy szinkronizálják a hozzáférést egy olyan gyorsítótárhoz, amely nem kiosztott oldalakat tartalmaz. A zárakról szóló vita akkor fordulhat elő, amikor több kapcsolat egyszerre próbálja az adatoldalakat ugyanabban az allokációs egységben osztani. Ez az ellentét csökkenthetjük azzal, hogy felosztjuk azt az objektumot, amelynek része ez az allokációs egységnek.
ACCESS_METHODS_DATASET_PARENT Arra szolgál, hogy a gyermekadathalmazhoz való hozzáférést szinkronizálja a szülő adathalmazhoz párhuzamos műveletek során.
ACCESS_METHODS_HOBT_FACTORY A belső hash tábla hozzáférésének szinkronizálására szolgál.
ACCESS_METHODS_HOBT A HoBt memórián belüli reprezentációjához való hozzáférés szinkronizálására használják.
ACCESS_METHODS_HOBT_COUNT Arra szolgál, hogy szinkronizálják a hozzáférést egy HoBt oldalhoz és sorszámlálókhoz.
ACCESS_METHODS_HOBT_VIRTUAL_ROOT Arra használják, hogy szinkronizálják a hozzáférést egy belső B-fa gyökéroldalának absztrakciójához.
ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC A munkaasztal hozzáférésének szinkronizálására szolgál.
ACCESS_METHODS_BULK_ALLOC A hozzáférés szinkronizálására szolgál a tömeges allokátorok között.
ACCESS_METHODS_SCAN_RANGE_GENERATOR Arra használják, hogy szinkronizálják a távolsággenerátorhoz való hozzáférést párhuzamos vizsgálatok során.
ACCESS_METHODS_KEY_RANGE_GENERATOR Arra szolgál, hogy szinkronizálják az előreolvasási műveletekhez a kulcstartomány párhuzamos vizsgálatai során.
APPEND_ONLY_STORAGE_INSERT_POINT Gyors, csak csatolt tárolóegységekben való beilletések szinkronizálására használják.
APPEND_ONLY_STORAGE_FIRST_ALLOC Arra szolgál, hogy szinkronizálják az első allokációt egy csak kiegészítő tárolóegységhez.
APPEND_ONLY_STORAGE_UNIT_MANAGER A gyors, csak csatolt tárolóegység-kezelő belső adatszerkezeti hozzáférési szinkronizációra használják.
APPEND_ONLY_STORAGE_MANAGER A gyors, csak csatolt tárolóegység-kezelőben szinkronizálva zsugorítási műveletek szinkronizálására szolgál.
BACKUP_RESULT_SET Párhuzamos biztonsági mentési eredményhalmazok szinkronizálására szolgál.
BACKUP_TAPE_POOL A biztonsági kazetta poolok szinkronizálására használták.
BACKUP_LOG_REDO A mentési napló újrafuttatásának szinkronizálására szolgál.
BACKUP_INSTANCE_ID Arra szolgál, hogy szinkronizálják a biztonsági mentés teljesítményfigyelő számlálókhoz szükséges példányazonosítók generálását.
BACKUP_MANAGER A belső biztonsági mentéskezelő szinkronizálására szolgál.
BACKUP_MANAGER_DIFFERENTIAL A differenciális biztonsági mentési műveletek szinkronizálására használták DBCC-vel.
BACKUP_OPERATION Belső adatszerkezeti szinkronizációra használják egy biztonsági mentési műveleten belül, például adatbázis-, napló- vagy fájlmentési műveletekben.
BACKUP_FILE_HANDLE Fájlnyitási műveletek szinkronizálására szolgál a visszaállítás során.
PUFFER Rövid távú hozzáférés szinkronizálására használják az adatbázis oldalakhoz. Pufferzár szükséges bármely adatbázis-oldal elolvasásához vagy módosításához. A buffer latch problémája több problémát is mutathat, például a fázisoldalakat és a lassú I/O-kat.

Ez a latch osztály lefedi az oldalzárak minden lehetséges felhasználását. sys.dm_os_wait_stats különbséget jelent az oldallatch várakozások között, amelyeket az I/O műveletek okoznak, és az olvasási és írás műveletek között az oldalon.
BUFFER_POOL_GROW Belső pufferkezelő szinkronizációra használják a buffer pool növekedési műveletek során.
DATABASE_CHECKPOINT Adatbázison belüli ellenőrzőpontok sorializálására használják.
CLR_PROCEDURE_HASHTABLE Csak belső használatra.
CLR_UDX_STORE Csak belső használatra.
CLR_DATAT_ACCESS Csak belső használatra.
CLR_XVAR_PROXY_LIST Csak belső használatra.
DBCC_CHECK_AGGREGATE Csak belső használatra.
DBCC_CHECK_RESULTSET Csak belső használatra.
DBCC_CHECK_TABLE Csak belső használatra.
DBCC_CHECK_TABLE_INIT Csak belső használatra.
DBCC_CHECK_TRACE_LIST Csak belső használatra.
DBCC_FILE_CHECK_OBJECT Csak belső használatra.
DBCC_PERF A belső teljesítménymérő számlálók szinkronizálására szolgál.
DBCC_PFS_STATUS Csak belső használatra.
DBCC_OBJECT_METADATA Csak belső használatra.
DBCC_HASH_DLL Csak belső használatra.
EVENTING_CACHE Csak belső használatra.
FCB A fájlvezérlő blokkhoz való hozzáférés szinkronizálására szolgál.
FCB_REPLICA Csak belső használatra.
FGCB_ALLOC Használat a round robin allokációs információk szinkronizálására egy fájlcsoporton belül.
FGCB_ADD_REMOVE A fájlcsoportokhoz való hozzáférés szinkronizálására adva, ejti, növelő és zsugorítási műveletekhez.
FILEGROUP_MANAGER Csak belső használatra.
FILE_MANAGER Csak belső használatra.
FILESTREAM_FCB Csak belső használatra.
FILESTREAM_FILE_MANAGER Csak belső használatra.
FILESTREAM_GHOST_FILES Csak belső használatra.
FILESTREAM_DFS_ROOT Csak belső használatra.
LOG_MANAGER Csak belső használatra.
FULLTEXT_DOCUMENT_ID Csak belső használatra.
FULLTEXT_DOCUMENT_ID_TRANSACTION Csak belső használatra.
FULLTEXT_DOCUMENT_ID_NOTIFY Csak belső használatra.
FULLTEXT_LOGS Csak belső használatra.
FULLTEXT_CRAWL_LOG Csak belső használatra.
FULLTEXT_ADMIN Csak belső használatra.
FULLTEXT_AMDIN_COMMAND_CACHE Csak belső használatra.
FULLTEXT_LANGUAGE_TABLE Csak belső használatra.
FULLTEXT_CRAWL_DM_LIST Csak belső használatra.
FULLTEXT_CRAWL_CATALOG Csak belső használatra.
FULLTEXT_FILE_MANAGER Csak belső használatra.
DATABASE_MIRRORING_REDO Csak belső használatra.
DATABASE_MIRRORING_SERVER Csak belső használatra.
DATABASE_MIRRORING_CONNECTION Csak belső használatra.
DATABASE_MIRRORING_STREAM Csak belső használatra.
QUERY_OPTIMIZER_VD_MANAGER Csak belső használatra.
QUERY_OPTIMIZER_ID_MANAGER Csak belső használatra.
QUERY_OPTIMIZER_VIEW_REP Csak belső használatra.
RECOVERY_BAD_PAGE_TABLE Csak belső használatra.
RECOVERY_MANAGER Csak belső használatra.
SECURITY_OPERATION_RULE_TABLE Csak belső használatra.
SECURITY_OBJPERM_CACHE Csak belső használatra.
SECURITY_CRYPTO Csak belső használatra.
SECURITY_KEY_RING Csak belső használatra.
SECURITY_KEY_LIST Csak belső használatra.
SERVICE_BROKER_CONNECTION_RECEIVE Csak belső használatra.
SERVICE_BROKER_TRANSMISSION Csak belső használatra.
SERVICE_BROKER_TRANSMISSION_UPDATE Csak belső használatra.
SERVICE_BROKER_TRANSMISSION_STATE Csak belső használatra.
SERVICE_BROKER_TRANSMISSION_ERRORS Csak belső használatra.
SSBXmitWork Csak belső használatra.
SERVICE_BROKER_MESSAGE_TRANSMISSION Csak belső használatra.
SERVICE_BROKER_MAP_MANAGER Csak belső használatra.
SERVICE_BROKER_HOST_NAME Csak belső használatra.
SERVICE_BROKER_READ_CACHE Csak belső használatra.
SERVICE_BROKER_WAITFOR_MANAGER Arra szolgál, hogy szinkronizálja a várakozó sorok instance-szintű térképét. Egy sor létezik minden adatbázis azonosítóra, adatbázis verzióra és sorazonosító tuple-re. A zárakról szóló vita akkor fordulhat elő, amikor sok kapcsolat a következők: VÁRAKOZÁS (FOGADÁS) állapotban; VÁRNI (RECEIVE) HÍVÁST; túllépte a WAITFOR időkorlátot; üzenet fogadása; a WAITFOR(RECEIVE) tranzakciót tartalmazó tranzakció elkötése vagy visszafordítása; Csökkentheted a vitat, ha csökkented a szálak számát egy WAITFOR(RECEIVE) várakozási állapotban.
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Csak belső használatra.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Csak belső használatra.
SERVICE_BROKER_TRANSPORT Csak belső használatra.
SERVICE_BROKER_MIRROR_ROUTE Csak belső használatra.
TRACE_ID Csak belső használatra.
TRACE_AUDIT_ID Csak belső használatra.
NYOM Csak belső használatra.
TRACE_CONTROLLER Csak belső használatra.
TRACE_EVENT_QUEUE Csak belső használatra.
TRANSACTION_DISTRIBUTED_MARK Csak belső használatra.
TRANSACTION_OUTCOME Csak belső használatra.
NESTING_TRANSACTION_READONLY Csak belső használatra.
NESTING_TRANSACTION_FULL Csak belső használatra.
MSQL_TRANSACTION_MANAGER Csak belső használatra.
DATABASE_AUTONAME_MANAGER Csak belső használatra.
UTILITY_DYNAMIC_VECTOR Csak belső használatra.
UTILITY_SPARSE_BITMAP Csak belső használatra.
UTILITY_DATABASE_DROP Csak belső használatra.
UTILITY_DYNAMIC_MANAGER_VIEW Csak belső használatra.
UTILITY_DEBUG_FILESTREAM Csak belső használatra.
UTILITY_LOCK_INFORMATION Csak belső használatra.
VERSIONING_TRANSACTION Csak belső használatra.
VERSIONING_TRANSACTION_LIST Csak belső használatra.
VERSIONING_TRANSACTION_CHAIN Csak belső használatra.
VERSIONING_STATE Csak belső használatra.
VERSIONING_STATE_CHANGE Csak belső használatra.
KTM_VIRTUAL_CLOCK Csak belső használatra.

Megjegyzés:

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.

Lásd még:

DBCC SQLPERF (Transact-SQL)
SQL Server operációs rendszerhez kapcsolódó dinamikus felügyeleti nézetek (Transact-SQL)
SQL Server, Latches Object