Freigeben über


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

  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, nehmen Sie eine Protokollsicherung ein, beobachten log_reuse_wait_descSie 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.