Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Datenzeile gilt als veraltet, wenn sie von einer Transaktion gelöscht wurde, die nicht mehr aktiv ist. Eine veraltete Zeile ist für die Garbage Collection berechtigt. Im Folgenden sind die Merkmale der Garbage Collection in In-Memory OLTP aufgeführt:
Nicht blockieren. Die Garbage Collection wird im Laufe der Zeit verteilt und hat minimale Auswirkungen auf die Arbeitsauslastung.
Genossenschaft. Benutzertransaktionen nehmen an der Garbage Collection mit dem Hauptthread für die Garbage Collection teil.
Effizient. Benutzertransaktionen entkoppeln veraltete Zeilen im Zugriffspfad (Index), der verwendet wird. Dadurch wird die erforderliche Arbeit reduziert, wenn die Zeile schließlich entfernt wird.
Ansprechbar. Der Speicherdruck führt zu aggressiver Garbage Collection.
Skalierbar. Nach dem Commit führen Benutzertransaktionen einen Teil der Arbeit der Garbage Collection durch. Je mehr Transaktionsaktivität erfolgt, desto mehr werden veraltete Zeilen getrennt.
Die Garbage Collection wird vom Hauptthread für die Garbage Collection gesteuert. Der Hauptthread der Garbage Collection läuft jede Minute oder sobald die Anzahl der bestätigten Transaktionen einen internen Schwellenwert überschreitet. Die Aufgabe des Garbage Collector besteht in:
Identifizieren Sie Transaktionen, die eine Menge Zeilen gelöscht oder aktualisiert haben und vor der ältesten aktiven Transaktion abgeschlossen wurden.
Identitätszeilenversionen, die von diesen alten Transaktionen erstellt wurden.
Gruppieren Sie alte Zeilen in einer oder mehreren Einheiten von jeweils 16 Zeilen. Dies geschieht, um die Arbeit des Garbage Collectors in kleinere Einheiten zu verteilen.
Verschieben Sie diese Arbeitseinheiten in die Garbage Collection-Warteschlange, eine für jeden Planer. Weitere Informationen finden Sie in den DMVs des Garbage Collector: sys.dm_xtp_gc_stats (Transact-SQL), sys.dm_db_xtp_gc_cycle_stats (Transact-SQL) und sys.dm_xtp_gc_queue_stats (Transact-SQL).
Nachdem eine Benutzertransaktion abgeschlossen ist, identifiziert sie alle Warteschlangenelemente, die dem Scheduler zugeordnet sind, auf dem sie ausgeführt wurde, und gibt dann den Speicher frei. Wenn die Warteschlange der Garbage Collection im Scheduler leer ist, sucht das System im aktuellen NUMA-Knoten nach einer nicht leeren Warteschlange. Wenn eine geringe Transaktionsaktivität besteht und ein Speicherdruck besteht, kann der Hauptthread für die Garbage Collection auf Garbage Collect-Zeilen aus jeder Warteschlange zugreifen. Wenn nach dem Löschen einer großen Anzahl von Zeilen keine Transaktionsaktivität erfolgt und kein Speicherdruck besteht, werden die gelöschten Zeilen erst dann automatisch bereinigt, wenn die Transaktionsaktivität fortgesetzt wird oder Speicherdruck vorhanden ist.