Transaktionsprotokolldatei wächst für Datenbanken mit In-Memory OLTP in SQL Server 2022
Problembeschreibung
Wenn für Ihre Datenbanken das In-Memory-OLTP-Feature in SQL Server 2022 aktiviert ist, werden Sie feststellen, dass die Transaktionsprotokolldatei kontinuierlich wächst. Darüber hinaus kann das SQL Server-Fehlerprotokoll Meldungen wie enthalten Close thread is falling behind: 4 checkpoints outstanding
.
Wenn Sie die SQL Server-Instanz neu starten, stellen Sie möglicherweise fest, dass die Datenbank lange dauert, bis der Wiederherstellungsvorgang der Datenbank abgeschlossen ist.
Behandeln des Problems mit sys.databases und sys.dm_db_xtp_checkpoint_stats
Wenn Sie die Katalogsicht sys.databases verwenden, um Informationen zu sammeln und dieses Problem zu beheben, wird die Spalte
log_reuse_wait_desc
als Grund für lange Kürzungen angezeigtXTP_CHECKPOINT
. Dieser Wert gibt an, dass das Transaktionsprotokoll auf das Auftreten eines In-Memory OLTP-Prüfpunkts (ehemals Hekaton) wartet. Dies deutet auf eine Verzögerung bei Prüfpunktvorgängen hin, die sich möglicherweise auf die Leistung oder das Wachstum von Protokolldateien auswirkt.Wenn Sie die dynamische Verwaltungssicht von SQL Server (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. Dies zeigt an, dass Prüfpunkte nicht effizient ausgeführt werden, was sich möglicherweise auf die Leistung und das Wachstum von Protokolldateien auswirkt.
Ursache
IN SQL Server 2022 wurden neue Funktionen eingeführt, die die Speicherverwaltung auf Servern mit großem Arbeitsspeicher verbessern, um Probleme mit nicht genügend Arbeitsspeicher zu reduzieren. Ein bekanntes Problem bei dieser Änderung kann manchmal zu dem im Abschnitt Symptome beschriebenen Verhalten führen.
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, erstellen Sie eine Protokollsicherung, beobachten
log_reuse_wait_desc
Sie , und verkleinern Sie das Protokoll bei Bedarf, um Speicherplatz freizugeben.
Weitere Informationen
Das Ablaufverfolgungsflag 9810 deaktiviert, dass die In-Memory OLTP-Engine TLS-Arbeitsspeicher (Thread Local Storage) zurückgibt und das Verhalten von SQL Server 2019 wiederhergestellt wird.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für