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 visualizzataXTP_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:
- Aggiungere -T9810 come parametro di avvio per l'istanza di SQL Server.
- Riavviare l'istanza.
- Eseguire un checkpoint, eseguire un backup del log, osservare
log_reuse_wait_desc
e 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.