Il file di log delle transazioni cresce per i database con In-Memory OLTP in SQL Server 2022

Sintomi

Quando nei database è abilitata la funzionalità OLTP in memoriain SQL Server 2022, si nota che il file di log delle transazioni cresce continuamente. Inoltre, il log degli errori SQL Server potrebbe avere messaggi come Close thread is falling behind: 4 checkpoints outstanding.

Se si riavvia l'istanza di SQL Server, è possibile che il database richieda molto tempo per completare il processo di ripristino del database.

Risolvere il problema con sys.databases e sys.dm_db_xtp_checkpoint_stats

  • Quando si usa la vista catalogo sys.databases per raccogliere informazioni e risolvere questo problema, la colonna log_reuse_wait_desc indica XTP_CHECKPOINT come motivo del troncamento lungo. Questo valore indica che il log delle transazioni è in attesa di un checkpoint OLTP (precedentemente noto come Hekaton) In-Memory. Suggerisce un ritardo nelle operazioni di checkpoint, potenzialmente influendo sulle prestazioni o sulla crescita dei file di log.

  • Quando si usa la sys.dm_db_xtp_checkpoint_stats DMV (Dynamic Management View) SQL Server per raccogliere informazioni e risolvere questo problema, nella colonna outstanding_checkpoint_count viene visualizzato un valore diverso da zero per un periodo di tempo prolungato. Indica che i checkpoint non si verificano in modo efficiente e potenzialmente influiscono sulle prestazioni e sulla crescita dei file di log.

Causa

SQL Server 2022 ha introdotto nuove funzionalità che migliorano la gestione della memoria in server di memoria di grandi dimensioni per ridurre le condizioni di memoria insufficiente. Un problema noto in questa modifica può talvolta causare il comportamento descritto nella sezione Sintomi .

Risoluzione

Per risolvere il problema, seguire questa procedura:

  1. Aggiungere -T9810 come parametro di avvio per l'istanza di SQL Server.
  2. Riavviare l'istanza di .
  3. Eseguire un checkpoint, eseguire un backup del log, osservare log_reuse_wait_desce compattare il log se necessario per recuperare spazio.

Ulteriori informazioni

Il flag di traccia 9810 disabilita il motore OLTP In-Memory dal recupero della memoria TLS (Thread Local Storage), ripristinando il comportamento di SQL Server 2019.