sys.dm_xtp_gc_queue_stats (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Gibt Informationen über jede Garbage Collection-Arbeitsthreadwarteschlange auf dem Server sowie verschiedene Statistiken zu diesen Warteschlangen aus. Pro logische CPU ist eine Warteschlange vorhanden.
Der Garbage Collection-Hauptthread (Leerlaufthread) verfolgt aktualisierte, gelöschte und eingefügte Zeilen für alle Transaktionen nach, die seit dem letzten Aufruf des Garbage Collection-Hauptthreads abgeschlossen wurden. Sobald er aktiviert wird, überprüft der Garbage Collection-Thread, ob der Zeitstempel der ältesten aktiven Transaktion geändert wurde. Wenn die älteste aktive Transaktion geändert wurde, reiht der Leerlaufthread Arbeitselemente für Transaktionen, deren Schreibmengen nicht mehr benötigt werden, (in Segmenten von 16 Zeilen) in die Warteschlange ein. Wenn Sie z. B. 1.024 Zeilen löschen, enthält die Warteschlange schließlich 64 Garbage Collection-Arbeitselemente mit jeweils 16 gelöschten Zeilen. Nachdem für eine Benutzertransaktion ein Commit ausgeführt wurde, werden alle im zugehörigen Zeitplanungsmodul in die Warteschlange eingereihten Arbeitsaufgaben ausgewählt. Wenn die Warteschlange im Zeitplanungsmodul keine Arbeitsaufgaben enthält, werden von der Benutzertransaktion alle Warteschlangen im aktuellen NUMA-Knoten durchsucht.
Sie können feststellen, ob Arbeitsspeicher für gelöschte Zeilen durch die Garbage Collection freigegeben wird, indem Sie sys.dm_xtp_gc_queue_stats ausführen und überprüfen, ob die Arbeitsaufgaben in der Warteschlange verarbeitet werden. Wenn Einträge in der current_queue_depth nicht verarbeitet werden oder keine neuen Arbeitsaufgaben zum current_queue_depth hinzugefügt werden, ist dies ein Hinweis darauf, dass die Garbage Collection keinen Arbeitsspeicher freigibt. Die Garbage Collection kann z. B. nicht ausgeführt werden, wenn eine lange ausgeführte Transaktion vorhanden ist.
Weitere Informationen finden Sie unter In-Memory OLTP (Speicheroptimierung).
Spaltenname | type | Beschreibung |
---|---|---|
queue_id | int | Der eindeutige Bezeichner der Warteschlange. |
total_enqueues | bigint | Die Gesamtanzahl von Arbeitselementen der Garbage Collection, die seit dem Start des Servers in die Warteschlange eingereiht wurden. |
total_dequeues | bigint | Die Gesamtanzahl von Arbeitselementen der Garbage Collection, die seit dem Start des Servers aus der Warteschlange entfernt wurden. |
current_queue_depth | bigint | Die aktuelle Anzahl von Arbeitselementen der Garbage Collection, die in dieser Warteschlange vorhanden sind. Dieses Element bedeutet möglicherweise, dass eine oder mehrere Garbage Collections durchgeführt werden sollen. |
maximum_queue_depth | bigint | Die maximale Tiefe, die diese Warteschlange aufgewiesen hat. |
last_service_ticks | bigint | CPU-Takte zu dem Zeitpunkt, als die Warteschlange zuletzt aktiv war. |
Berechtigungen
Erfordert die VIEW SERVER STATE-Berechtigung.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Benutzerszenario
Diese Ausgabe zeigt, dass SQL Server entweder auf 4 Kernen ausgeführt wird, oder die SQL Server-Instanz wurde zu vier Kernen affinitiert:
Diese Ausgabe veranschaulicht, dass in den Warteschlangen keine zu verarbeitenden Arbeitselemente enthalten sind. Bei Warteschlange 0 beträgt die Gesamtarbeitselemente, die seit dem SQL-Start in die Warteschlange verschoben wurden, 15625, und die maximale Warteschlangentiefe beträgt 15625.
queue_id total_enqueues total_dequeues current_queue_depth maximum_queue_depth last_service_ticks
----------------------------------------------------------------------------------------------------
0 15625 15625 0 15625 1233573168347
1 15625 15625 0 15625 1234123295566
2 15625 15625 0 15625 1233569418146
3 15625 15625 0 15625 1233571605761
Siehe auch
Speicheroptimierte Tabellen-Dynamische Verwaltungsansichten (Transact-SQL)