Freigeben über


sys.dm_os_latch_stats (Transact-SQL)

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

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version).

Spaltenname

Datentyp

Beschreibung

latch_class

nvarchar(120)

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 5 Minuten während eines Latchwartevorgangs sowie am Ende eines Latchwartevorgangs 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.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Hinweise

sys.dm_os_latch_stats kann zum Identifizieren der Quelle von Latchkonflikten verwendet werden, indem die relative Anzahl der Wartevorgänge und der Wartezeiten für die verschiedenen Latchklassen überprüft wird. In einigen Fällen können Sie Latchkonflikte möglicherweise lösen oder reduzieren. Es kann jedoch Situationen geben, in denen Sie sich mit Microsoft Support Services in Verbindung setzen müssen.

Sie können den Inhalt von sys.dm_os_latch_stats mithilfe von 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 persistent gespeichert, wenn SQL Server neu gestartet wird.Alle Daten stellen einen Gesamtwert seit dem letzten Zurücksetzen der Statistiken oder dem Starten von SQL Server dar.

Latches

Ein Latch ist ein Lightweight-Synchronisierungsobjekt, das von verschiedenen SQL Server-Komponenten verwendet wird. Ein Latch wird in erster Linie zum Synchronisieren von Datenbankseiten verwendet. 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. 0 oder mehr Latches einer bestimmten Klasse können zu jeder Zeit in einer SQL Server-Instanz vorhanden sein.

Hinweis

sys.dm_os_latch_stats verfolgt Latchanforderungen nicht nach, die sofort erteilt werden oder die ohne Warten einen Fehler erzeugen.

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

Latchklasse

Beschreibung

ALLOC_CREATE_RINGBUF

Wird intern von SQL Server zum Initialisieren der Synchronisierung beim Erstellen eines Zuordnungsringpuffers verwendet.

ALLOC_CREATE_FREESPACE_CACHE

Wird zum Initialisieren der Synchronisierung interner Caches für freien Speicher für Heaps verwendet.

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 unterscheidet zwischen Seitenlatch-Wartevorgängen, die durch E/A-Vorgänge verursacht werden, und Lese-/Schreibvorgängen auf der Seite.

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 interner Gebrauch.

CLR_UDX_STORE

Nur interner Gebrauch.

CLR_DATAT_ACCESS

Nur interner Gebrauch.

CLR_XVAR_PROXY_LIST

Nur interner Gebrauch.

DBCC_CHECK_AGGREGATE

Nur interner Gebrauch.

DBCC_CHECK_RESULTSET

Nur interner Gebrauch.

DBCC_CHECK_TABLE

Nur interner Gebrauch.

DBCC_CHECK_TABLE_INIT

Nur interner Gebrauch.

DBCC_CHECK_TRACE_LIST

Nur interner Gebrauch.

DBCC_FILE_CHECK_OBJECT

Nur interner Gebrauch.

DBCC_PERF

Wird zum Synchronisieren interner Leistungsindikatoren verwendet.

DBCC_PFS_STATUS

Nur interner Gebrauch.

DBCC_OBJECT_METADATA

Nur interner Gebrauch.

DBCC_HASH_DLL

Nur interner Gebrauch.

EVENTING_CACHE

Nur interner Gebrauch.

FCB

Wird zum Synchronisieren des Zugriffs auf den Dateikontrollblock verwendet.

FCB_REPLICA

Nur interner Gebrauch.

FGCB_ALLOC

Wird zum Synchronisieren des Zugriffs auf Roundrobin-Zuordnungsinformationen in einer Dateigruppe verwendet.

FGCB_ADD_REMOVE

Wird zum Synchronisieren des Zugriffs auf Dateigruppen für ADD- und DROP-Dateivorgänge verwendet.

FILEGROUP_MANAGER

Nur interner Gebrauch.

FILE_MANAGER

Nur interner Gebrauch.

FILESTREAM_FCB

Nur interner Gebrauch.

FILESTREAM_FILE_MANAGER

Nur interner Gebrauch.

FILESTREAM_GHOST_FILES

Nur interner Gebrauch.

FILESTREAM_DFS_ROOT

Nur interner Gebrauch.

LOG_MANAGER

Nur interner Gebrauch.

FULLTEXT_DOCUMENT_ID

Nur interner Gebrauch.

FULLTEXT_DOCUMENT_ID_TRANSACTION

Nur interner Gebrauch.

FULLTEXT_DOCUMENT_ID_NOTIFY

Nur interner Gebrauch.

FULLTEXT_LOGS

Nur interner Gebrauch.

FULLTEXT_CRAWL_LOG

Nur interner Gebrauch.

FULLTEXT_ADMIN

Nur interner Gebrauch.

FULLTEXT_AMDIN_COMMAND_CACHE

Nur interner Gebrauch.

FULLTEXT_LANGUAGE_TABLE

Nur interner Gebrauch.

FULLTEXT_CRAWL_DM_LIST

Nur interner Gebrauch.

FULLTEXT_CRAWL_CATALOG

Nur interner Gebrauch.

FULLTEXT_FILE_MANAGER

Nur interner Gebrauch.

DATABASE_MIRRORING_REDO

Nur interner Gebrauch.

DATABASE_MIRRORING_SERVER

Nur interner Gebrauch.

DATABASE_MIRRORING_CONNECTION

Nur interner Gebrauch.

DATABASE_MIRRORING_STREAM

Nur interner Gebrauch.

QUERY_OPTIMIZER_VD_MANAGER

Nur interner Gebrauch.

QUERY_OPTIMIZER_ID_MANAGER

Nur interner Gebrauch.

QUERY_OPTIMIZER_VIEW_REP

Nur interner Gebrauch.

RECOVERY_BAD_PAGE_TABLE

Nur interner Gebrauch.

RECOVERY_MANAGER

Nur interner Gebrauch.

SECURITY_OPERATION_RULE_TABLE

Nur interner Gebrauch.

SECURITY_OBJPERM_CACHE

Nur interner Gebrauch.

SECURITY_CRYPTO

Nur interner Gebrauch.

SECURITY_KEY_RING

Nur interner Gebrauch.

SECURITY_KEY_LIST

Nur interner Gebrauch.

SERVICE_BROKER_CONNECTION_RECEIVE

Nur interner Gebrauch.

SERVICE_BROKER_TRANSMISSION

Nur interner Gebrauch.

SERVICE_BROKER_TRANSMISSION_UPDATE

Nur interner Gebrauch.

SERVICE_BROKER_TRANSMISSION_STATE

Nur interner Gebrauch.

SERVICE_BROKER_TRANSMISSION_ERRORS

Nur interner Gebrauch.

SSBXmitWork

Nur interner Gebrauch.

SERVICE_BROKER_MESSAGE_TRANSMISSION

Nur interner Gebrauch.

SERVICE_BROKER_MAP_MANAGER

Nur interner Gebrauch.

SERVICE_BROKER_HOST_NAME

Nur interner Gebrauch.

SERVICE_BROKER_READ_CACHE

Nur interner Gebrauch.

SERVICE_BROKER_WAITFOR_MANAGER

Nur interner Gebrauch.

SERVICE_BROKER_WAITFOR_TRANSACTION_DATA

Nur interner Gebrauch.

SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA

Nur interner Gebrauch.

SERVICE_BROKER_TRANSPORT

Nur interner Gebrauch.

SERVICE_BROKER_MIRROR_ROUTE

Nur interner Gebrauch.

TRACE_ID

Nur interner Gebrauch.

TRACE_AUDIT_ID

Nur interner Gebrauch.

TRACE

Nur interner Gebrauch.

TRACE_CONTROLLER

Nur interner Gebrauch.

TRACE_EVENT_QUEUE

Nur interner Gebrauch.

TRANSACTION_DISTRIBUTED_MARK

Nur interner Gebrauch.

TRANSACTION_OUTCOME

Wird nur intern verwendet.

NESTING_TRANSACTION_READONLY

Wird nur intern verwendet.

NESTING_TRANSACTION_FULL

Wird nur intern verwendet.

MSQL_TRANSACTION_MANAGER

Nur interner Gebrauch.

DATABASE_AUTONAME_MANAGER

Nur interner Gebrauch.

UTILITY_DYNAMIC_VECTOR

Nur interner Gebrauch.

UTILITY_SPARSE_BITMAP

Nur interner Gebrauch.

UTILITY_DATABASE_DROP

Nur interner Gebrauch.

UTILITY_DYNAMIC_MANAGER_VIEW

Nur interner Gebrauch.

UTILITY_DEBUG_FILESTREAM

Nur interner Gebrauch.

UTILITY_LOCK_INFORMATION

Nur interner Gebrauch.

VERSIONING_TRANSACTION

Nur interner Gebrauch.

VERSIONING_TRANSACTION_LIST

Nur interner Gebrauch.

VERSIONING_TRANSACTION_CHAIN

Nur interner Gebrauch.

VERSIONING_STATE

Nur interner Gebrauch.

VERSIONING_STATE_CHANGE

Nur interner Gebrauch.

KTM_VIRTUAL_CLOCK

Nur interner Gebrauch.

Siehe auch

Verweis

DBCC SQLPERF (Transact-SQL)

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)

Dynamische Verwaltungssichten in Verbindung mit dem SQL Server-Betriebssystem (Transact-SQL)