Transaktionsprotokolldatei wächst für Datenbanken mit IN-Memory OLTP in SQL Server 2022
Symptome
Wenn Ihre Datenbanken das In-Memory-OLTP-Feature in SQL Server 2022 aktiviert haben, stellen Sie fest, dass die Transaktionsprotokolldatei kontinuierlich wächst. Darüber hinaus enthält das SQL Server-Fehlerprotokoll möglicherweise Meldungen wie Close thread is falling behind: 4 checkpoints outstanding
.
Wenn Sie die SQL Server-Instanz neu starten, stellen Sie möglicherweise fest, dass die Datenbank viel Zeit in Anspruch nimmt, um den Datenbankwiederherstellungsvorgang abzuschließen.
Beheben des Problems mit sys.databases und sys.dm_db_xtp_checkpoint_stats
Wenn Sie die Katalogansicht sys.databases verwenden, um Informationen zu sammeln und dieses Problem zu beheben, wird die Spalte
log_reuse_wait_desc
als Grund für eine lange Abkürzung angezeigtXTP_CHECKPOINT
. Dieser Wert gibt an, dass das Transaktionsprotokoll auf einen OlTP-Prüfpunkt (früher Hekaton) wartet. Es schlägt eine Verzögerung bei Prüfvorgängen vor, was sich möglicherweise auf die Leistung oder das Wachstum von Protokolldateien auswirkt.Wenn Sie die dynamische SQL Server-Verwaltungsansicht (DYNAMIC Management View, DMV) sys.dm_db_xtp_checkpoint_stats verwenden, um Informationen zu sammeln und dieses Problem zu beheben, zeigt die Spalte
outstanding_checkpoint_count
einen Wert ungleich Null für einen längeren Zeitraum an. Es weist darauf hin, dass Prüfpunkte nicht effizient auftreten, was sich möglicherweise auf die Leistung und das Wachstum von Protokolldateien auswirkt.
Ursache
SQL Server 2022 hat neue Funktionen eingeführt, mit denen die Speicherverwaltung auf großen Speicherservern verbessert wird, um nicht genügend Arbeitsspeicherbedingungen zu vermeiden. Ein bekanntes Problem in dieser Änderung kann manchmal zu dem verhalten führen, das im Abschnitt "Symptome" beschrieben wird.
Lösung
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
- Fügen Sie -T9810 als Startparameter für die SQL Server-Instanz hinzu.
- Starten Sie die Instanz neu.
- Stellen Sie einen Prüfpunkt aus, nehmen Sie eine Protokollsicherung ein, beobachten
log_reuse_wait_desc
Sie das Protokoll, und verkleinern Sie das Protokoll, falls erforderlich, um Speicherplatz freizufordern.
Notiz
Dieses Problem wurde im kumulativen Update 7 für SQL Server 2022 behoben.
Weitere Informationen
Mit dem Ablaufverfolgungskennzeichnung 9810 wird das OLTP-Modul im Speicher des In-Memory-OLTP-Speichers (Thread Local Storage, TLS) deaktiviert und auf das Verhalten von SQL Server 2019 zurückgesetzt.