Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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