Transactielogboekbestand groeit voor databases met IN-Memory OLTP in SQL Server 2022

Symptomen

Wanneer voor uw databases de functie In-Memory OLTP is ingeschakeld in SQL Server 2022, ziet u dat het transactielogboekbestand voortdurend groeit. Daarnaast bevat het SQL Server-foutenlogboek mogelijk berichten zoals Close thread is falling behind: 4 checkpoints outstanding.

Als u de SQL Server-instantie opnieuw opstart, kan het lang duren voordat de database het herstelproces van de database voltooit.

Het probleem met sys.databases en sys.dm_db_xtp_checkpoint_stats oplossen

  • Wanneer u de catalogusweergave sys.databases gebruikt om informatie te verzamelen en dit probleem te onderzoeken, toont de kolom log_reuse_wait_descXTP_CHECKPOINT als de reden voor lange afbreking. Deze waarde geeft aan dat het transactielogboek wacht tot een in-memory OLTP-controlepunt (voorheen bekend als Hekaton) plaatsvindt. Het suggereert een vertraging in checkpointbewerkingen, die mogelijk invloed hebben op de prestaties of de groei van logboekbestanden.

  • Wanneer u de dynamische beheerweergave (DMV) sys.dm_db_xtp_checkpoint_stats van SQL Server gebruikt om informatie te verzamelen en problemen met dit probleem op te sporen, wordt in de kolom outstanding_checkpoint_count gedurende langere tijd een niet-nulwaarde weergegeven. Het geeft aan dat controlepunten niet efficiënt plaatsvinden, wat mogelijk van invloed is op de prestaties en de groei van logboekbestanden.

Oorzaak

SQL Server 2022 heeft nieuwe mogelijkheden geïntroduceerd die het geheugenbeheer in grote geheugenservers verbeteren om de out-of-memory-omstandigheden te verminderen. Een bekend probleem in deze wijziging kan soms leiden tot het gedrag dat wordt beschreven in de sectie Symptomen .

Resolutie

Voer de volgende stappen uit om het probleem op te lossen:

  1. Voeg -T9810 toe als opstartparameter voor het SQL Server-exemplaar.
  2. Start de instantie opnieuw op.
  3. Geef een checkpoint, maak een logback-up, bekijk log_reuse_wait_desc en verklein het logboek indien nodig om ruimte vrij te maken.

Notitie

Dit probleem is opgelost in cumulatieve update 7 voor SQL Server 2022.

Meer informatie

Met de trace flag 9810 wordt de In-Memory OLTP-engine uitgeschakeld voor het vrijmaken van TLS-geheugen (Thread Local Storage), waarbij het gedrag van SQL Server 2019 wordt hersteld.