Partager via


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 indique XTP_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 :

  1. Ajoutez -T9810 comme paramètre de démarrage pour l’instance SQL Server.
  2. Redémarrez l’instance.
  3. Émettez un point de contrôle, effectuez une sauvegarde de journal, observez log_reuse_wait_descet 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.