sys.dm_os_latch_stats (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar information om alla latch-vänter organiserade per klass.

Anmärkning

För att kalla detta från Azure Synapse Analytics eller Analytics Platform System (PDW), använd namnet sys.dm_pdw_nodes_os_latch_stats. Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Kolumnnamn Datatyp Description
latch_class nvarchar(60) Namnet på latch-klassen.
waiting_requests_count bigint Antal väntningar på lås i den här klassen. Den här räknaren ökas i början av en lås väntetid.
wait_time_ms bigint Total väntetid, i millisekunder, på lås i denna klass.

Not: Denna kolumn uppdateras var femte minut under en låsväntan och i slutet av en låsväntan.
max_wait_time_ms bigint Maximal tid ett minnesobjekt har väntat på denna låsning. Om detta värde är ovanligt högt kan det tyda på en intern deadlock.
pdw_node_id int gäller för: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifieraren för noden som den här fördelningen är på.

Permissions

På SQL Server och SQL Managed Instance kräver VIEW SERVER STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE STATE behörighet för databasen eller medlemskap i ##MS_ServerStateReader## serverrollen.

Behörigheter för SQL Server 2022 och senare

Kräver BEHÖRIGHET FÖR VISNINGSSERVERNS PRESTANDATILLSTÅND på servern.

Anmärkningar

sys.dm_os_latch_stats kan användas för att identifiera källan till låskonflikter genom att undersöka de relativa väntetiderna och väntetider för de olika låsklasserna. I vissa situationer kan du kanske lösa eller minska greppkonflikter. Det kan dock finnas situationer som kräver att du kontaktar Microsofts kundtjänst.

Du kan återställa innehållet i sys.dm_os_latch_stats genom att använda DBCC SQLPERF följande:

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

Detta återställer alla räknare till 0.

Anmärkning

Den här statistiken sparas inte om SQL Server startas om. Alla data är kumulativa sedan den senaste gången statistiken återställdes eller sedan SQL Server startades.

Latches

En latch är ett internt lättviktigt synkroniseringsobjekt liknande ett lås, som används av olika SQL Server-komponenter. En latch används främst för att synkronisera databassidor under operationer som buffert- eller filåtkomst. Varje lås är kopplat till en enda allokeringsenhet.

En latch-väntan uppstår när en latch-begäran inte kan beviljas omedelbart, eftersom latchen hålls av en annan tråd i ett konfliktrikt läge. Till skillnad från lås släpps en låsning omedelbart efter operationen, även vid skrivoperationer.

Lås grupperas i klasser baserat på komponenter och användning. Noll eller fler latchar av en viss klass kan finnas när som helst i en instans av SQL Server.

Anmärkning

sys.dm_os_latch_stats spårar inte låsförfrågningar som beviljades omedelbart, eller som misslyckades utan att vänta.

Följande tabell innehåller korta beskrivningar av de olika låsklasserna.

Låsklass Description
ALLOC_CREATE_RINGBUF Används internt av SQL Server för att initiera synkroniseringen av skapandet av en allokeringsringsbuffert.
ALLOC_CREATE_FREESPACE_CACHE Används för att initiera synkroniseringen av interna lediga cacher för heaps.
ALLOC_CACHE_MANAGER Används för att synkronisera interna koherenstester.
ALLOC_FREESPACE_CACHE Används för att synkronisera åtkomsten till en cache av sidor med tillgängligt utrymme för heaps och binära stora objekt (BLOBs). Konkurrens på latchar av denna klass kan uppstå när flera anslutningar försöker infoga rader i en heap eller BLOB samtidigt. Du kan minska denna påstående genom att partitionera objektet. Varje partition har sin egen låsning. Partitionering kommer att fördela inserts över flera lås.
ALLOC_EXTENT_CACHE Används för att synkronisera åtkomsten till en cache av extents som innehåller sidor som inte är allokerade. Konkurrens på lås av denna klass kan uppstå när flera anslutningar försöker allokera datasidor i samma allokeringsenhet samtidigt. Denna tvist kan minskas genom att partitionera objektet som denna allokeringsenhet är en del av.
ACCESS_METHODS_DATASET_PARENT Används för att synkronisera åtkomst till barndataset till föräldradatasetet under parallella operationer.
ACCESS_METHODS_HOBT_FACTORY Används för att synkronisera åtkomst till en intern hashtabell.
ACCESS_METHODS_HOBT Används för att synkronisera åtkomst till minnesrepresentationen av en HoBt.
ACCESS_METHODS_HOBT_COUNT Används för att synkronisera åtkomst till en HoBt-sida och radräknare.
ACCESS_METHODS_HOBT_VIRTUAL_ROOT Används för att synkronisera åtkomst till rotsidans abstraktion av ett internt B-träd.
ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC Används för att synkronisera åtkomst till arbetsbordet.
ACCESS_METHODS_BULK_ALLOC Används för att synkronisera åtkomst inom bulkallokatorer.
ACCESS_METHODS_SCAN_RANGE_GENERATOR Används för att synkronisera åtkomst till en räckviddsgenerator under parallella skanningar.
ACCESS_METHODS_KEY_RANGE_GENERATOR Används för att synkronisera åtkomst till läs-framåt-operationer under parallella skanningar av nyckelområdet.
APPEND_ONLY_STORAGE_INSERT_POINT Används för att synkronisera insättningar i snabba append-endast lagringsenheter.
APPEND_ONLY_STORAGE_FIRST_ALLOC Används för att synkronisera den första tilldelningen för en endast append-lagringsenhet.
APPEND_ONLY_STORAGE_UNIT_MANAGER Används för intern åtkomst till datastrukturer inom den snabba append-only Storage Unit Manager.
APPEND_ONLY_STORAGE_MANAGER Används för att synkronisera krympningsoperationer i den snabba append-endast lagringsenhetshanteraren.
BACKUP_RESULT_SET Används för att synkronisera parallella backup-resultatuppsättningar.
BACKUP_TAPE_POOL Används för att synkronisera backup-bandpooler.
BACKUP_LOG_REDO Används för att synkronisera backuplogg-omläggningar.
BACKUP_INSTANCE_ID Används för att synkronisera genereringen av instans-ID:n för backup-prestandamonitorräknare.
BACKUP_MANAGER Används för att synkronisera den interna backup-hanteraren.
BACKUP_MANAGER_DIFFERENTIAL Används för att synkronisera differentiella backup-operationer med DBCC.
BACKUP_OPERATION Används för intern synkronisering av datastrukturer inom en säkerhetskopieringsoperation, såsom databas-, logg- eller filbackup.
BACKUP_FILE_HANDLE Används för att synkronisera filöppnande operationer under en återställningsoperation.
BUFFERT Används för att synkronisera korttidsåtkomst till databassidor. En buffertlåsning krävs innan man läser eller ändrar någon databassida. Buffer latch-konflikt kan indikera flera problem, inklusive hot pages och långsamma I/O:s.

Denna latch-klass täcker alla möjliga användningar av sidlås. sys.dm_os_wait_stats skiljer mellan sidlåsningsvänter som orsakas av I/O-operationer och läs- och skrivoperationer på sidan.
BUFFER_POOL_GROW Används för intern bufferthanterare synkronisering under buffertpooltillväxt.
DATABASE_CHECKPOINT Används för att serialisera checkpoints i en databas.
CLR_PROCEDURE_HASHTABLE Endast intern användning.
CLR_UDX_STORE Endast intern användning.
CLR_DATAT_ACCESS Endast intern användning.
CLR_XVAR_PROXY_LIST Endast intern användning.
DBCC_CHECK_AGGREGATE Endast intern användning.
DBCC_CHECK_RESULTSET Endast intern användning.
DBCC_CHECK_TABLE Endast intern användning.
DBCC_CHECK_TABLE_INIT Endast intern användning.
DBCC_CHECK_TRACE_LIST Endast intern användning.
DBCC_FILE_CHECK_OBJECT Endast intern användning.
DBCC_PERF Används för att synkronisera interna prestandamätare.
DBCC_PFS_STATUS Endast intern användning.
DBCC_OBJECT_METADATA Endast intern användning.
DBCC_HASH_DLL Endast intern användning.
EVENTING_CACHE Endast intern användning.
FCB Används för att synkronisera åtkomst till filkontrollblocket.
FCB_REPLICA Endast intern användning.
FGCB_ALLOC Använd för att synkronisera åtkomst till round robin-allokeringsinformation inom en filgrupp.
FGCB_ADD_REMOVE Använd för att synkronisera åtkomst till filgrupper för att lägga till, ta bort, växa och krympa filoperationer.
FILEGROUP_MANAGER Endast intern användning.
FILE_MANAGER Endast intern användning.
FILESTREAM_FCB Endast intern användning.
FILESTREAM_FILE_MANAGER Endast intern användning.
FILESTREAM_GHOST_FILES Endast intern användning.
FILESTREAM_DFS_ROOT Endast intern användning.
LOG_MANAGER Endast intern användning.
FULLTEXT_DOCUMENT_ID Endast intern användning.
FULLTEXT_DOCUMENT_ID_TRANSACTION Endast intern användning.
FULLTEXT_DOCUMENT_ID_NOTIFY Endast intern användning.
FULLTEXT_LOGS Endast intern användning.
FULLTEXT_CRAWL_LOG Endast intern användning.
FULLTEXT_ADMIN Endast intern användning.
FULLTEXT_AMDIN_COMMAND_CACHE Endast intern användning.
FULLTEXT_LANGUAGE_TABLE Endast intern användning.
FULLTEXT_CRAWL_DM_LIST Endast intern användning.
FULLTEXT_CRAWL_CATALOG Endast intern användning.
FULLTEXT_FILE_MANAGER Endast intern användning.
DATABASE_MIRRORING_REDO Endast intern användning.
DATABASE_MIRRORING_SERVER Endast intern användning.
DATABASE_MIRRORING_CONNECTION Endast intern användning.
DATABASE_MIRRORING_STREAM Endast intern användning.
QUERY_OPTIMIZER_VD_MANAGER Endast intern användning.
QUERY_OPTIMIZER_ID_MANAGER Endast intern användning.
QUERY_OPTIMIZER_VIEW_REP Endast intern användning.
RECOVERY_BAD_PAGE_TABLE Endast intern användning.
RECOVERY_MANAGER Endast intern användning.
SECURITY_OPERATION_RULE_TABLE Endast intern användning.
SECURITY_OBJPERM_CACHE Endast intern användning.
SECURITY_CRYPTO Endast intern användning.
SECURITY_KEY_RING Endast intern användning.
SECURITY_KEY_LIST Endast intern användning.
SERVICE_BROKER_CONNECTION_RECEIVE Endast intern användning.
SERVICE_BROKER_TRANSMISSION Endast intern användning.
SERVICE_BROKER_TRANSMISSION_UPDATE Endast intern användning.
SERVICE_BROKER_TRANSMISSION_STATE Endast intern användning.
SERVICE_BROKER_TRANSMISSION_ERRORS Endast intern användning.
SSBXmitWork Endast intern användning.
SERVICE_BROKER_MESSAGE_TRANSMISSION Endast intern användning.
SERVICE_BROKER_MAP_MANAGER Endast intern användning.
SERVICE_BROKER_HOST_NAME Endast intern användning.
SERVICE_BROKER_READ_CACHE Endast intern användning.
SERVICE_BROKER_WAITFOR_MANAGER Används för att synkronisera en instansnivåkarta över vänteköer. En kö finns per databas-ID, databasversion och kö-ID-tuple. Konkurrens på lås av denna klass kan uppstå när många anslutningar är: I ett WAITFOR(RECEIVE) väntetillstånd; anropar WAITFOR(MOTTAGANDE); överskrider VÄNTETIDSINTERVALLET; att ta emot ett meddelande; att genomföra eller rulla tillbaka transaktionen som innehåller WAITFOR(RECEIVE); Du kan minska konkurrensen genom att minska antalet trådar i ett WAITFOR(RECEIVE)-väntläge.
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Endast intern användning.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Endast intern användning.
SERVICE_BROKER_TRANSPORT Endast intern användning.
SERVICE_BROKER_MIRROR_ROUTE Endast intern användning.
TRACE_ID Endast intern användning.
TRACE_AUDIT_ID Endast intern användning.
SPÅRA Endast intern användning.
TRACE_CONTROLLER Endast intern användning.
TRACE_EVENT_QUEUE Endast intern användning.
TRANSACTION_DISTRIBUTED_MARK Endast intern användning.
TRANSACTION_OUTCOME Endast intern användning.
NESTING_TRANSACTION_READONLY Endast intern användning.
NESTING_TRANSACTION_FULL Endast intern användning.
MSQL_TRANSACTION_MANAGER Endast intern användning.
DATABASE_AUTONAME_MANAGER Endast intern användning.
UTILITY_DYNAMIC_VECTOR Endast intern användning.
UTILITY_SPARSE_BITMAP Endast intern användning.
UTILITY_DATABASE_DROP Endast intern användning.
UTILITY_DYNAMIC_MANAGER_VIEW Endast intern användning.
UTILITY_DEBUG_FILESTREAM Endast intern användning.
UTILITY_LOCK_INFORMATION Endast intern användning.
VERSIONING_TRANSACTION Endast intern användning.
VERSIONING_TRANSACTION_LIST Endast intern användning.
VERSIONING_TRANSACTION_CHAIN Endast intern användning.
VERSIONING_STATE Endast intern användning.
VERSIONING_STATE_CHANGE Endast intern användning.
KTM_VIRTUAL_CLOCK Endast intern användning.

Anmärkning

I dokumentationen används termen B-träd vanligtvis som referens till index. I radlagringsindex implementerar databasmotorn ett B+-träd. Detta gäller inte för kolumnlagringsindex eller index i minnesoptimerade tabeller. Mer information finns i arkitekturen och designguiden för SQL Server och Azure SQL-index.

Se även

DBCC SQLPERF (Transact-SQL)
SQL Server-operativsystemrelaterade dynamiska hanteringsvyer (Transact-SQL)
SQL Server, Latches-objekt