Le fichier journal des transactions augmente pour les bases de données avec OLTP en mémoire dans SQL Server 2022
Symptômes
Lorsque vos bases de données ont la fonctionnalité OLTP en mémoire activée dans SQL Server 2022, vous remarquez que le fichier journal des transactions augmente en continu. En outre, le journal des erreurs SQL Server peut contenir des messages tels que Close thread is falling behind: 4 checkpoints outstanding
.
Si vous redémarrez l’instance SQL Server, vous remarquerez peut-être que la base de données prend beaucoup de temps pour terminer le processus de récupération de la base de données.
Résoudre le problème avec sys.databases et sys.dm_db_xtp_checkpoint_stats
Lorsque vous utilisez la vue catalogue sys.databases pour collecter des informations et résoudre ce problème, la colonne
log_reuse_wait_desc
indiqueXTP_CHECKPOINT
la raison de la troncation longue. Cette valeur indique que le journal des transactions attend qu’un point de contrôle OLTP en mémoire (anciennement appelé Hekaton) se produise. Il suggère un retard dans les opérations de point de contrôle, ce qui peut avoir un impact sur la croissance des performances ou des fichiers journaux.Lorsque vous utilisez la vue de gestion dynamique SQL Server (DMV) sys.dm_db_xtp_checkpoint_stats pour collecter des informations et résoudre ce problème, la colonne
outstanding_checkpoint_count
affiche une valeur différente de zéro pendant une période prolongée. Il indique que les points de contrôle ne se produisent pas efficacement, ce qui peut affecter la croissance des performances et des fichiers journaux.
Cause
SQL Server 2022 a introduit de nouvelles fonctionnalités qui améliorent la gestion de la mémoire dans les serveurs de mémoire volumineux afin de réduire les conditions de mémoire insuffisante. Un problème connu dans cette modification peut parfois entraîner le comportement décrit dans la section Symptômes .
Résolution
Pour résoudre le problème, procédez comme suit :
- Ajoutez -T9810 comme paramètre de démarrage pour l’instance SQL Server.
- Redémarrez l’instance.
- Émettez un point de contrôle, effectuez une sauvegarde de journal, observez
log_reuse_wait_desc
et réduisez le journal si nécessaire pour récupérer de l’espace.
Note
Ce problème a été résolu dans la mise à jour cumulative 7 pour SQL Server 2022.
Plus d’informations
L’indicateur de trace 9810 désactive le moteur OLTP en mémoire de récupérer la mémoire tls (Thread Local Storage), en rétablissant le comportement de SQL Server 2019.