Il file di log delle transazioni aumenta per i database con OLTP in memoria in SQL Server 2022

Sintomi

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

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

Risolvere il problema relativo a sys.databases e sys.dm_db_xtp_checkpoint_stats

  • Quando si usa la vista del catalogo sys.databases per raccogliere informazioni e risolvere questo problema, la colonna log_reuse_wait_desc viene visualizzata XTP_CHECKPOINT come motivo del troncamento lungo. Questo valore indica che il log delle transazioni è in attesa che si verifichi un checkpoint OLTP in memoria (in precedenza noto come Hekaton). Suggerisce un ritardo nelle operazioni di checkpoint, che potenzialmente influisce sull'aumento delle prestazioni o dei file di log.

  • Quando si usa la DMV (Dynamic Management View) di SQL Server sys.dm_db_xtp_checkpoint_stats 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, con potenziali effetti sull'aumento delle prestazioni e 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 portare al 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.
  3. Eseguire un checkpoint, eseguire un backup del log, osservare log_reuse_wait_desce compattare il log, se necessario per recuperare spazio.

Nota

Questo problema è stato risolto nell'aggiornamento cumulativo 7 per SQL Server 2022.

Ulteriori informazioni

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