Freigeben über


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 angezeigt XTP_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:

  1. Fügen Sie -T9810 als Startparameter für die SQL Server-Instanz hinzu.
  2. Starten Sie die Instanz neu.
  3. Stellen Sie einen Prüfpunkt aus, erstellen Sie eine Protokollsicherung, beobachten log_reuse_wait_descSie , 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.