Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
Geeft informatie terug over alle venttijden die per klas zijn georganiseerd.
Opmerking
Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_latch_stats. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| latch_class | nvarchar(60) | Naam van de latch-klas. |
| waiting_requests_count | bigint | Aantal wachters op de vergrendelingen in deze klas. Deze teller wordt verhoogd aan het begin van een latch-wacht. |
| wait_time_ms | bigint | Totale wachttijd, in milliseconden, op de latches in deze klas. Notitie: Deze column wordt elke vijf minuten bijgewerkt tijdens een latch-wacht en aan het einde van een latch-wacht. |
| max_wait_time_ms | bigint | Maximale tijd dat een geheugenobject op deze latch heeft gewacht. Als deze waarde ongewoon hoog is, kan dit wijzen op een interne deadlock. |
| pdw_node_id | int |
van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW) De id voor het knooppunt waarop deze distributie zich bevindt. |
Permissions
Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .
Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.
Machtigingen voor SQL Server 2022 en hoger
Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.
Opmerkingen
sys.dm_os_latch_stats kan worden gebruikt om de bron van de latch-contentie te identificeren door de relatieve wachttijden en wachttijden voor de verschillende latchklassen te onderzoeken. In sommige situaties kun je de aanslagstrijd mogelijk oplossen of verminderen. Er kunnen echter situaties zijn waarin u contact moet opnemen met de klantenservice van Microsoft.
Je kunt de inhoud van sys.dm_os_latch_stats resetten door het volgende te gebruiken DBCC SQLPERF :
DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);
GO
Hiermee worden alle tellers opnieuw ingesteld op 0.
Opmerking
Deze statistieken blijven niet behouden als SQL Server opnieuw wordt opgestart. Alle gegevens zijn cumulatief sinds de laatste keer dat de statistieken opnieuw zijn ingesteld of sinds SQL Server is gestart.
Latches
Een latch is een intern lichtgewicht synchronisatieobject vergelijkbaar met een lock, dat wordt gebruikt door verschillende SQL Server-componenten. Een latch wordt voornamelijk gebruikt om databasepagina's te synchroniseren tijdens operaties zoals buffer- of bestandstoegang. Elke latch is gekoppeld aan één enkele toewijzingseenheid.
Een latch-wacht treedt op wanneer een latch-verzoek niet direct kan worden toegekend, omdat de latch wordt vastgehouden door een andere thread in een conflicterende modus. In tegenstelling tot sloten wordt een latch direct na de bewerking losgemaakt, zelfs bij schrijfoperaties.
Latches worden gegroepeerd in klassen op basis van componenten en gebruik. Nul of meer latches van een bepaalde klasse kunnen op elk moment bestaan in een instantie van SQL Server.
Opmerking
sys.dm_os_latch_stats Houdt geen latchverzoeken bij die direct zijn goedgekeurd, of die zonder wachttijd zijn mislukt.
De volgende tabel bevat korte beschrijvingen van de verschillende latch-klassen.
| Sluitklasse | Description |
|---|---|
| ALLOC_CREATE_RINGBUF | Intern gebruikt door SQL Server om de synchronisatie van het creëren van een allocatieringbuffer te initialiseren. |
| ALLOC_CREATE_FREESPACE_CACHE | Gebruikt om de synchronisatie van interne vrije ruimte caches voor heaps te initialiseren. |
| ALLOC_CACHE_MANAGER | Gebruikt om interne coherentietests te synchroniseren. |
| ALLOC_FREESPACE_CACHE | Gebruikt om de toegang tot een cache van pagina's te synchroniseren met beschikbare ruimte voor heaps en binaire grote objecten (BLOBs). Concurrentie op latches van deze klasse kan optreden wanneer meerdere verbindingen proberen rijen tegelijkertijd in een heap of BLOB in te voegen. Je kunt deze bewering verminderen door het object te partitioneren. Elke partitie heeft zijn eigen latch. Partitioneren zal de inserts over meerdere latches verdelen. |
| ALLOC_EXTENT_CACHE | Gebruikt om de toegang te synchroniseren naar een cache van extents die pagina's bevat die niet zijn toegewezen. Concurrentie op latches van deze klasse kan optreden wanneer meerdere verbindingen proberen datapagina's tegelijk in dezelfde allocatie-eenheid toe te wijzen. Deze bewering kan worden verminderd door het object waarvan deze allocatie-eenheid deel uitmaakt te partitioneren. |
| ACCESS_METHODS_DATASET_PARENT | Gebruikt om de toegang van de kinddataset te synchroniseren met de ouderdataset tijdens parallelle operaties. |
| ACCESS_METHODS_HOBT_FACTORY | Gebruikt om toegang te synchroniseren naar een interne hashtabel. |
| ACCESS_METHODS_HOBT | Gebruikt om toegang te synchroniseren naar de in-memory representatie van een HoBt. |
| ACCESS_METHODS_HOBT_COUNT | Gebruikt om toegang te synchroniseren naar een HoBt-pagina en rijtellers. |
| ACCESS_METHODS_HOBT_VIRTUAL_ROOT | Gebruikt om toegang te synchroniseren tot de root page-abstractie van een interne B-boom. |
| ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC | Gebruikt om toegang tot de werktafel te synchroniseren. |
| ACCESS_METHODS_BULK_ALLOC | Gebruikt om toegang te synchroniseren binnen bulk allocators. |
| ACCESS_METHODS_SCAN_RANGE_GENERATOR | Gebruikt om toegang tot een bereikgenerator te synchroniseren tijdens parallelle scans. |
| ACCESS_METHODS_KEY_RANGE_GENERATOR | Gebruikt om toegang te synchroniseren naar read-ahead operaties tijdens parallelle scans van sleutelbereik. |
| APPEND_ONLY_STORAGE_INSERT_POINT | Gebruikt om inserts te synchroniseren in snelle opslagunits die alleen aan toevoegingen kunnen worden gebruikt. |
| APPEND_ONLY_STORAGE_FIRST_ALLOC | Gebruikt om de eerste toewijzing te synchroniseren voor een alleen append-only opslagunit. |
| APPEND_ONLY_STORAGE_UNIT_MANAGER | Gebruikt voor interne synchronisatie van datastructuurtoegang binnen de snelle append-only storage unit manager. |
| APPEND_ONLY_STORAGE_MANAGER | Gebruikt om krimpoperaties te synchroniseren in de snelle opslagunitbeheerder die alleen wordt toegevoegd. |
| BACKUP_RESULT_SET | Gebruikt om parallelle back-upresultaten te synchroniseren. |
| BACKUP_TAPE_POOL | Gebruikt om back-uptapepools te synchroniseren. |
| BACKUP_LOG_REDO | Gebruikt om back-uplogherhalingsoperaties te synchroniseren. |
| BACKUP_INSTANCE_ID | Gebruikt om de generatie van instance ID's voor back-up performance monitor-tellers te synchroniseren. |
| BACKUP_MANAGER | Gebruikt om de interne back-upmanager te synchroniseren. |
| BACKUP_MANAGER_DIFFERENTIAL | Gebruikt om differentiële back-upoperaties te synchroniseren met DBCC. |
| BACKUP_OPERATION | Gebruikt voor interne synchronisatie van datastructuren binnen een back-upoperatie, zoals database-, log- of bestandsback-up. |
| BACKUP_FILE_HANDLE | Gebruikt om bestandsopenoperaties te synchroniseren tijdens een hersteloperatie. |
| BUFFER | Gebruikt om kortetermijntoegang tot databasepagina's te synchroniseren. Een buffer latch is vereist voordat men een databasepagina leest of bewerkt. Buffer latch contention kan wijzen op verschillende problemen, waaronder hot pages en trage I/O's. Deze latch-cursus behandelt alle mogelijke toepassingen van page latches. sys.dm_os_wait_stats maakt het verschil tussen page latch-wachttijden die worden veroorzaakt door I/O-operaties en lees- en schrijfoperaties op de pagina. |
| BUFFER_POOL_GROW | Gebruikt voor interne synchronisatie van bufferbeheerders tijdens bufferpool-groeioperaties. |
| DATABASE_CHECKPOINT | Gebruikt om checkpoints binnen een database te serialiseren. |
| CLR_PROCEDURE_HASHTABLE | Alleen intern gebruik. |
| CLR_UDX_STORE | Alleen intern gebruik. |
| CLR_DATAT_ACCESS | Alleen intern gebruik. |
| CLR_XVAR_PROXY_LIST | Alleen intern gebruik. |
| DBCC_CHECK_AGGREGATE | Alleen intern gebruik. |
| DBCC_CHECK_RESULTSET | Alleen intern gebruik. |
| DBCC_CHECK_TABLE | Alleen intern gebruik. |
| DBCC_CHECK_TABLE_INIT | Alleen intern gebruik. |
| DBCC_CHECK_TRACE_LIST | Alleen intern gebruik. |
| DBCC_FILE_CHECK_OBJECT | Alleen intern gebruik. |
| DBCC_PERF | Gebruikt om interne prestatiemonitortellers te synchroniseren. |
| DBCC_PFS_STATUS | Alleen intern gebruik. |
| DBCC_OBJECT_METADATA | Alleen intern gebruik. |
| DBCC_HASH_DLL | Alleen intern gebruik. |
| EVENTING_CACHE | Alleen intern gebruik. |
| FCB | Gebruikt om toegang tot het bestandscontroleblok te synchroniseren. |
| FCB_REPLICA | Alleen intern gebruik. |
| FGCB_ALLOC | Gebruik om toegang te synchroniseren tot round robin-allocatie-informatie binnen een bestandsgroep. |
| FGCB_ADD_REMOVE | Gebruik om toegang tot bestandsgroepen te synchroniseren voor toevoegen, verwijderen, laten groeien en verkleinen van bestanden. |
| FILEGROUP_MANAGER | Alleen intern gebruik. |
| FILE_MANAGER | Alleen intern gebruik. |
| FILESTREAM_FCB | Alleen intern gebruik. |
| FILESTREAM_FILE_MANAGER | Alleen intern gebruik. |
| FILESTREAM_GHOST_FILES | Alleen intern gebruik. |
| FILESTREAM_DFS_ROOT | Alleen intern gebruik. |
| LOG_MANAGER | Alleen intern gebruik. |
| FULLTEXT_DOCUMENT_ID | Alleen intern gebruik. |
| FULLTEXT_DOCUMENT_ID_TRANSACTION | Alleen intern gebruik. |
| FULLTEXT_DOCUMENT_ID_NOTIFY | Alleen intern gebruik. |
| FULLTEXT_LOGS | Alleen intern gebruik. |
| FULLTEXT_CRAWL_LOG | Alleen intern gebruik. |
| FULLTEXT_ADMIN | Alleen intern gebruik. |
| FULLTEXT_AMDIN_COMMAND_CACHE | Alleen intern gebruik. |
| FULLTEXT_LANGUAGE_TABLE | Alleen intern gebruik. |
| FULLTEXT_CRAWL_DM_LIST | Alleen intern gebruik. |
| FULLTEXT_CRAWL_CATALOG | Alleen intern gebruik. |
| FULLTEXT_FILE_MANAGER | Alleen intern gebruik. |
| DATABASE_MIRRORING_REDO | Alleen intern gebruik. |
| DATABASE_MIRRORING_SERVER | Alleen intern gebruik. |
| DATABASE_MIRRORING_CONNECTION | Alleen intern gebruik. |
| DATABASE_MIRRORING_STREAM | Alleen intern gebruik. |
| QUERY_OPTIMIZER_VD_MANAGER | Alleen intern gebruik. |
| QUERY_OPTIMIZER_ID_MANAGER | Alleen intern gebruik. |
| QUERY_OPTIMIZER_VIEW_REP | Alleen intern gebruik. |
| RECOVERY_BAD_PAGE_TABLE | Alleen intern gebruik. |
| RECOVERY_MANAGER | Alleen intern gebruik. |
| SECURITY_OPERATION_RULE_TABLE | Alleen intern gebruik. |
| SECURITY_OBJPERM_CACHE | Alleen intern gebruik. |
| SECURITY_CRYPTO | Alleen intern gebruik. |
| SECURITY_KEY_RING | Alleen intern gebruik. |
| SECURITY_KEY_LIST | Alleen intern gebruik. |
| SERVICE_BROKER_CONNECTION_RECEIVE | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSMISSION | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSMISSION_UPDATE | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSMISSION_STATE | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSMISSION_ERRORS | Alleen intern gebruik. |
| SSBXmitWork | Alleen intern gebruik. |
| SERVICE_BROKER_MESSAGE_TRANSMISSION | Alleen intern gebruik. |
| SERVICE_BROKER_MAP_MANAGER | Alleen intern gebruik. |
| SERVICE_BROKER_HOST_NAME | Alleen intern gebruik. |
| SERVICE_BROKER_READ_CACHE | Alleen intern gebruik. |
| SERVICE_BROKER_WAITFOR_MANAGER | Gebruikt om een instance level map van wachtrijen te synchroniseren. Er bestaat één wachtrij per database-ID, databaseversie en wachtrij-ID-tuple. Concurrentie op latches van deze klasse kan optreden wanneer veel verbindingen zijn: In een WAITFOR(RECEIVE) wachttoestand; roepen WAITFOR(ONTVANGEN); overschrijdt de WACHT-timeout; een bericht ontvangen; het committen of terugrollen van de transactie die de WAITFOR(RECEIVE) bevat; Je kunt de contention verminderen door het aantal threads in een WAITFOR(RECEIVE) wachttoestand te verminderen. |
| SERVICE_BROKER_WAITFOR_TRANSACTION_DATA | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA | Alleen intern gebruik. |
| SERVICE_BROKER_TRANSPORT | Alleen intern gebruik. |
| SERVICE_BROKER_MIRROR_ROUTE | Alleen intern gebruik. |
| TRACE_ID | Alleen intern gebruik. |
| TRACE_AUDIT_ID | Alleen intern gebruik. |
| SPOOR | Alleen intern gebruik. |
| TRACE_CONTROLLER | Alleen intern gebruik. |
| TRACE_EVENT_QUEUE | Alleen intern gebruik. |
| TRANSACTION_DISTRIBUTED_MARK | Alleen intern gebruik. |
| TRANSACTION_OUTCOME | Alleen intern gebruik. |
| NESTING_TRANSACTION_READONLY | Alleen intern gebruik. |
| NESTING_TRANSACTION_FULL | Alleen intern gebruik. |
| MSQL_TRANSACTION_MANAGER | Alleen intern gebruik. |
| DATABASE_AUTONAME_MANAGER | Alleen intern gebruik. |
| UTILITY_DYNAMIC_VECTOR | Alleen intern gebruik. |
| UTILITY_SPARSE_BITMAP | Alleen intern gebruik. |
| UTILITY_DATABASE_DROP | Alleen intern gebruik. |
| UTILITY_DYNAMIC_MANAGER_VIEW | Alleen intern gebruik. |
| UTILITY_DEBUG_FILESTREAM | Alleen intern gebruik. |
| UTILITY_LOCK_INFORMATION | Alleen intern gebruik. |
| VERSIONING_TRANSACTION | Alleen intern gebruik. |
| VERSIONING_TRANSACTION_LIST | Alleen intern gebruik. |
| VERSIONING_TRANSACTION_CHAIN | Alleen intern gebruik. |
| VERSIONING_STATE | Alleen intern gebruik. |
| VERSIONING_STATE_CHANGE | Alleen intern gebruik. |
| KTM_VIRTUAL_CLOCK | Alleen intern gebruik. |
Opmerking
Documentatie maakt gebruik van de term B-tree in het algemeen in verwijzing naar indexen. In rowstore-indexen implementeert de Database Engine een B+ tree. Dit geldt niet voor columnstore-indexen of indexen voor tabellen die zijn geoptimaliseerd voor geheugen. Zie de SQL Server- en Azure SQL-indexarchitectuur en ontwerphandleidingvoor meer informatie.
Zie ook
DBCC SQLPERF (Transact-SQL)
Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)
SQL Server, Latches Object