sys.dm_os_latch_stats (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt Informationen zu allen nach Klassen sortierten Latchwartevorgängen zurück.

Hinweis

Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_os_latch_stats. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Spaltenname Datentyp Beschreibung
latch_class nvarchar(60) Name der Latchklasse.
waiting_requests_count bigint Anzahl der Wartevorgänge auf Latches in dieser Klasse. Dieser Leistungsindikator wird beim Starten eines Latchwartevorgangs erhöht.
wait_time_ms bigint Gesamtwartezeit auf Latches in dieser Klasse (in Millisekunden).

Hinweis: Diese Spalte wird alle fünf Minuten während einer Latch-Wartezeit und am Ende einer Latch-Wartezeit aktualisiert.
max_wait_time_ms bigint Maximale Zeitdauer, die ein Speicherobjekt auf diesen Latch gewartet hat. Wenn dieser Wert ungewöhnlich hoch ist, kann dies ein Hinweis auf einen internen Deadlock sein.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Berechtigungen

Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE-Berechtigung erforderlich.

Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto oder die Mitgliedschaft in der ##MS_ServerStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Hinweise

sys.dm_os_latch_stats können verwendet werden, um die Quelle der Riegelungsverknügung zu identifizieren, indem die relativen Wartezeiten und Wartezeiten für die verschiedenen Latch-Klassen untersucht werden. In einigen Fällen können Sie Latchkonflikte möglicherweise lösen oder reduzieren. Es kann jedoch Situationen geben, in denen Sie sich an den Microsoft-Kundendienst wenden müssen.

Sie können den Inhalt von sys.dm_os_latch_stats DBCC SQLPERF wie folgt zurücksetzen:

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

Dadurch werden alle Leistungsindikatoren auf 0 zurückgesetzt.

Hinweis

Diese Statistiken werden nicht beibehalten, wenn SQL Server neu gestartet wird. Alle Daten sind seit dem letzten Zurücksetzen der Statistiken kumulativ oder seit dem Start von SQL Server.

Latches

Ein Riegel ist ein internes einfaches Synchronisierungsobjekt, das einer Sperre ähnelt, die von verschiedenen SQL Server-Komponenten verwendet wird. Ein Riegel wird in erster Linie verwendet, um Datenbankseiten während Vorgängen wie Puffer- oder Dateizugriff zu synchronisieren. Jedem Latch wird eine einzelne Zuordnungseinheit zugeordnet.

Ein Latchwartevorgang findet dann statt, wenn der Latch nicht sofort erteilt werden kann, da er von einem anderen Thread in einem in Konflikt stehenden Modus beansprucht wird. Im Gegensatz zu Sperren wird ein Latch unmittelbar nach dem Vorgang freigegeben, selbst bei Schreibvorgängen.

Latches werden nach Klassen gruppiert, die auf Komponenten und der Verwendung basieren. Null oder mehr Latches einer bestimmten Klasse können zu einem beliebigen Zeitpunkt in einer Instanz von SQL Server vorhanden sein.

Hinweis

sys.dm_os_latch_stats verfolgt keine Verschlussanforderungen, die sofort gewährt wurden oder die ohne Warten fehlgeschlagen sind.

Die folgende Tabelle enthält kurze Beschreibungen der verschiedenen Latchklassen.

Latchklasse Beschreibung
ALLOC_CREATE_RINGBUF Wird intern von SQL Server verwendet, um die Synchronisierung der Erstellung eines Zuordnungsringpuffers zu initialisieren.
ALLOC_CREATE_FREESPACE_CACHE Wird verwendet, um die Synchronisierung interner Leerspeichercaches für Heaps zu initialisieren.
ALLOC_CACHE_MANAGER Wird zum Synchronisieren interner Kohärenztests verwendet.
ALLOC_FREESPACE_CACHE Wird zum Synchronisieren des Zugriffs auf einen Seitencache mit verfügbarem Speicher für Heaps und BLOBs (Binary Large Objects) verwendet. Konflikte bei Latches dieser Klasse können auftreten, wenn mehrere Verbindungen versuchen, gleichzeitig Zeilen in einen Heap oder ein BLOB einzufügen. Durch Partitionieren des Objekts sinkt das Konfliktrisiko. Jede Partition verfügt über einen eigenen Latch. Durch das Partitionieren werden die Einfügevorgänge auf mehrere Latches verteilt.
ALLOC_EXTENT_CACHE Wird zum Synchronisieren des Zugriffs auf einen Cache mit Blöcken verwendet, die nicht zugeordnete Seiten enthalten. Konflikte bei Latches dieser Klasse können auftreten, wenn mehrere Verbindungen versuchen, gleichzeitig in derselben Zuordnungseinheit Datenseiten zuzuordnen. Das Konfliktrisiko kann durch Partitionieren des Objekts, zu dem diese Zuordnungseinheit gehört, gesenkt werden.
ACCESS_METHODS_DATASET_PARENT Wird zum Synchronisieren des Zugriffs des untergeordneten Datasets auf das übergeordnete Dataset während paralleler Vorgänge verwendet.
ACCESS_METHODS_HOBT_FACTORY Wird zum Synchronisieren des Zugriffs auf eine interne Hashtabelle verwendet.
ACCESS_METHODS_HOBT Wird zum Synchronisieren des Zugriffs auf die speicherinterne Darstellung eines HoBts verwendet.
ACCESS_METHODS_HOBT_COUNT Wird zum Synchronisieren des Zugriffs auf HoBt-Seiten- und Zeilenleistungsindikatoren verwendet.
ACCESS_METHODS_HOBT_VIRTUAL_ROOT Wird zum Synchronisieren des Zugriffs auf die Stammseitenabstraktion einer internen B-Struktur verwendet.
ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC Wird zum Synchronisieren des Zugriffs auf Arbeitstabellen verwendet.
ACCESS_METHODS_BULK_ALLOC Wird zum Synchronisieren des Zugriffs innerhalb von Massenzuordnungen verwendet.
ACCESS_METHODS_SCAN_RANGE_GENERATOR Wird zum Synchronisieren des Zugriffs auf einen Bereichgenerator während paralleler Scans verwendet.
ACCESS_METHODS_KEY_RANGE_GENERATOR Wird zum Synchronisieren des Zugriffs auf Read-Ahead-Vorgänge während paralleler Scans in Schlüsselbereichen verwendet.
APPEND_ONLY_STORAGE_INSERT_POINT Wird zum Synchronisieren von Einfügungen in schnellen Nur anhängen-Speichereinheiten verwendet.
APPEND_ONLY_STORAGE_FIRST_ALLOC Wird zum Synchronisieren der ersten Zuordnung für eine Nur anhängen-Speichereinheit verwendet.
APPEND_ONLY_STORAGE_UNIT_MANAGER Wird zum Synchronisieren des Zugriffs auf die interne Datenstruktur innerhalb der Verwaltung schneller Nur anhängen-Speichereinheiten verwendet.
APPEND_ONLY_STORAGE_MANAGER Wird zum Synchronisieren von Verkleinerungsvorgängen bei der Verwaltung schneller Nur anhängen-Speichereinheiten verwendet.
BACKUP_RESULT_SET Wird zum Synchronisieren paralleler Sicherungsresultsets verwendet.
BACKUP_TAPE_POOL Wird zum Synchronisieren von Pools mit Sicherungsbändern verwendet.
BACKUP_LOG_REDO Wird zum Synchronisieren von Wiederholungsvorgängen für Sicherungsprotokolle verwendet.
BACKUP_INSTANCE_ID Wird zum Synchronisieren der Generierung von Instanz-IDs für Sicherungsleistungsindikatoren verwendet.
BACKUP_MANAGER Wird zum Synchronisieren des internen Sicherungs-Managers verwendet.
BACKUP_MANAGER_DIFFERENTIAL Wird zum Synchronisieren differenzieller Sicherungsvorgänge mit DBCC verwendet.
BACKUP_OPERATION Wird für die interne Datenstruktursynchronisierung in einem Sicherungsvorgang verwendet, wie z. B. in einer Datenbank-, Protokoll- oder Dateisicherung.
BACKUP_FILE_HANDLE Wird zum Synchronisieren von Vorgängen zum Öffnen von Dateien während einer Wiederherstellung verwendet.
BUFFER Wird zum Synchronisieren des kurzfristigen Zugriffs auf Datenbankseiten verwendet. Vor dem Lesen oder Ändern von Datenbankseiten ist ein Pufferlatch erforderlich. Pufferlatchkonflikte können ein Hinweis auf unterschiedliche Probleme sein, darunter Hotpages und langsame E/A-Vorgänge.

Diese Latchklasse umfasst alle möglichen Verwendungen von Seitenlatches. sys.dm_os_wait_stats macht einen Unterschied zwischen Seiten latch-Wartezeiten, die durch E/A-Vorgänge und Lese- und Schreibvorgänge auf der Seite verursacht werden.
BUFFER_POOL_GROW Wird für die Synchronisierung des internen Puffer-Managers während Erweiterungen des Pufferpools verwendet.
DATABASE_CHECKPOINT Wird für die Serialisierung von Prüfpunkten in einer Datenbank verwendet.
CLR_PROCEDURE_HASHTABLE Nur zur internen Verwendung.
CLR_UDX_STORE Nur zur internen Verwendung.
CLR_DATAT_ACCESS Nur zur internen Verwendung.
CLR_XVAR_PROXY_LIST Nur zur internen Verwendung.
DBCC_CHECK_AGGREGATE Nur zur internen Verwendung.
DBCC_CHECK_RESULTSET Nur zur internen Verwendung.
DBCC_CHECK_TABLE Nur zur internen Verwendung.
DBCC_CHECK_TABLE_INIT Nur zur internen Verwendung.
DBCC_CHECK_TRACE_LIST Nur zur internen Verwendung.
DBCC_FILE_CHECK_OBJECT Nur zur internen Verwendung.
DBCC_PERF Wird zum Synchronisieren interner Leistungsindikatoren verwendet.
DBCC_PFS_STATUS Nur zur internen Verwendung.
DBCC_OBJECT_METADATA Nur zur internen Verwendung.
DBCC_HASH_DLL Nur zur internen Verwendung.
EVENTING_CACHE Nur zur internen Verwendung.
FCB Wird zum Synchronisieren des Zugriffs auf den Dateikontrollblock verwendet.
FCB_REPLICA Nur zur internen Verwendung.
FGCB_ALLOC Wird zum Synchronisieren des Zugriffs auf Roundrobin-Zuordnungsinformationen in einer Dateigruppe verwendet.
FGCB_ADD_REMOVE Dient zum Synchronisieren des Zugriffs auf Dateigruppen zum Hinzufügen, Ablegen, Vergrößern und Verkleinern von Dateivorgängen.
FILEGROUP_MANAGER Nur zur internen Verwendung.
FILE_MANAGER Nur zur internen Verwendung.
FILESTREAM_FCB Nur zur internen Verwendung.
FILESTREAM_FILE_MANAGER Nur zur internen Verwendung.
FILESTREAM_GHOST_FILES Nur zur internen Verwendung.
FILESTREAM_DFS_ROOT Nur zur internen Verwendung.
LOG_MANAGER Nur zur internen Verwendung.
FULLTEXT_DOCUMENT_ID Nur zur internen Verwendung.
FULLTEXT_DOCUMENT_ID_TRANSACTION Nur zur internen Verwendung.
FULLTEXT_DOCUMENT_ID_NOTIFY Nur zur internen Verwendung.
FULLTEXT_LOGS Nur zur internen Verwendung.
FULLTEXT_CRAWL_LOG Nur zur internen Verwendung.
FULLTEXT_ADMIN Nur zur internen Verwendung.
FULLTEXT_AMDIN_COMMAND_CACHE Nur zur internen Verwendung.
FULLTEXT_LANGUAGE_TABLE Nur zur internen Verwendung.
FULLTEXT_CRAWL_DM_LIST Nur zur internen Verwendung.
FULLTEXT_CRAWL_CATALOG Nur zur internen Verwendung.
FULLTEXT_FILE_MANAGER Nur zur internen Verwendung.
DATABASE_MIRRORING_REDO Nur zur internen Verwendung.
DATABASE_MIRRORING_SERVER Nur zur internen Verwendung.
DATABASE_MIRRORING_CONNECTION Nur zur internen Verwendung.
DATABASE_MIRRORING_STREAM Nur zur internen Verwendung.
QUERY_OPTIMIZER_VD_MANAGER Nur zur internen Verwendung.
QUERY_OPTIMIZER_ID_MANAGER Nur zur internen Verwendung.
QUERY_OPTIMIZER_VIEW_REP Nur zur internen Verwendung.
RECOVERY_BAD_PAGE_TABLE Nur zur internen Verwendung.
RECOVERY_MANAGER Nur zur internen Verwendung.
SECURITY_OPERATION_RULE_TABLE Nur zur internen Verwendung.
SECURITY_OBJPERM_CACHE Nur zur internen Verwendung.
SECURITY_CRYPTO Nur zur internen Verwendung.
SECURITY_KEY_RING Nur zur internen Verwendung.
SECURITY_KEY_LIST Nur zur internen Verwendung.
SERVICE_BROKER_CONNECTION_RECEIVE Nur zur internen Verwendung.
SERVICE_BROKER_TRANSMISSION Nur zur internen Verwendung.
SERVICE_BROKER_TRANSMISSION_UPDATE Nur zur internen Verwendung.
SERVICE_BROKER_TRANSMISSION_STATE Nur zur internen Verwendung.
SERVICE_BROKER_TRANSMISSION_ERRORS Nur zur internen Verwendung.
SSBXmitWork Nur zur internen Verwendung.
SERVICE_BROKER_MESSAGE_TRANSMISSION Nur zur internen Verwendung.
SERVICE_BROKER_MAP_MANAGER Nur zur internen Verwendung.
SERVICE_BROKER_HOST_NAME Nur zur internen Verwendung.
SERVICE_BROKER_READ_CACHE Nur zur internen Verwendung.
SERVICE_BROKER_WAITFOR_MANAGER Wird verwendet, um eine Instanzebenenzuordnung von Warteschleifen zu synchronisieren. Pro Datenbank-ID, Datenbankversion und Warteschlangen-ID-Tupel ist eine Warteschlange vorhanden. Es kann vorkommen, dass die Klammern dieser Klasse auftreten können, wenn viele Verbindungen vorhanden sind: In einem WAITFOR(RECEIVE)-Wartezustand; AUFRUFEN VON WAITFOR(RECEIVE); überschreiten des WAITFOR-Timeouts; Empfangen einer Nachricht; Commit oder Rollback der Transaktion, die die WAITFOR(RECEIVE) enthält; Sie können den Inhalt reduzieren, indem Sie die Anzahl der Threads in einem WAITFOR(RECEIVE)-Wartezustand verringern.
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA Nur zur internen Verwendung.
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA Nur zur internen Verwendung.
SERVICE_BROKER_TRANSPORT Nur zur internen Verwendung.
SERVICE_BROKER_MIRROR_ROUTE Nur zur internen Verwendung.
TRACE_ID Nur zur internen Verwendung.
TRACE_AUDIT_ID Nur zur internen Verwendung.
TRACE Nur zur internen Verwendung.
TRACE_CONTROLLER Nur zur internen Verwendung.
TRACE_EVENT_QUEUE Nur zur internen Verwendung.
TRANSACTION_DISTRIBUTED_MARK Nur zur internen Verwendung.
TRANSACTION_OUTCOME Nur zur internen Verwendung.
NESTING_TRANSACTION_READONLY Nur zur internen Verwendung.
NESTING_TRANSACTION_FULL Nur zur internen Verwendung.
MSQL_TRANSACTION_MANAGER Nur zur internen Verwendung.
DATABASE_AUTONAME_MANAGER Nur zur internen Verwendung.
UTILITY_DYNAMIC_VECTOR Nur zur internen Verwendung.
UTILITY_SPARSE_BITMAP Nur zur internen Verwendung.
UTILITY_DATABASE_DROP Nur zur internen Verwendung.
UTILITY_DYNAMIC_MANAGER_VIEW Nur zur internen Verwendung.
UTILITY_DEBUG_FILESTREAM Nur zur internen Verwendung.
UTILITY_LOCK_INFORMATION Nur zur internen Verwendung.
VERSIONING_TRANSACTION Nur zur internen Verwendung.
VERSIONING_TRANSACTION_LIST Nur zur internen Verwendung.
VERSIONING_TRANSACTION_CHAIN Nur zur internen Verwendung.
VERSIONING_STATE Nur zur internen Verwendung.
VERSIONING_STATE_CHANGE Nur zur internen Verwendung.
KTM_VIRTUAL_CLOCK Nur zur internen Verwendung.

Hinweis

In der SQL Server-Dokumentation wird der Begriff „B-Struktur“ im Allgemeinen in Bezug auf Indizes verwendet. In Zeilenspeicherindizes implementiert SQL Server eine B+-Struktur. Dies gilt nicht für Columnstore-Indizes oder In-Memory-Datenspeicher. Weitere Informationen finden Sie im Leitfaden zur Architektur und zum Entwerfen von SQL Server- und Azure SQL-Indizes.

Weitere Informationen

DBCC SQLPERF (Transact-SQL)
Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)
SQL Server, Latches-Objekt