sys.dm_os_latch_stats (Transact-SQL)
Gibt Informationen zu allen nach Klassen sortierten Latchwartevorgängen zurück.
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 permanent 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 |
Nur interner Gebrauch. |
NESTING_TRANSACTION_READONLY |
Nur interner Gebrauch. |
NESTING_TRANSACTION_FULL |
Nur interner Gebrauch. |
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. |