Le fichier journal des transactions augmente pour les bases de données avec In-Memory OLTP en SQL Server 2022

Symptômes

Lorsque la fonctionnalité OLTP en mémoire de vos bases de données est activée dans SQL Server 2022, vous remarquez que le fichier journal des transactions augmente en permanence. 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 le SQL Server instance, vous remarquerez peut-être que le processus de récupération de la base de données prend beaucoup de temps.

Résoudre le problème avec sys.databases et sys.dm_db_xtp_checkpoint_stats

  • Lorsque vous utilisez l’affichage 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 In-Memory (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 les performances ou la croissance des fichiers journaux.

  • Lorsque vous utilisez le sys.dm_db_xtp_checkpoint_stats de vue de gestion dynamique (DMV) SQL Server 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. Cela indique que les points de contrôle ne se produisent pas efficacement, ce qui peut affecter les performances et la croissance 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 le SQL Server instance.
  2. Redémarrez le 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.

Plus d’informations

L’indicateur de trace 9810 désactive le moteur OLTP In-Memory de récupérer la mémoire tls (Stockage local des threads), ce qui revient au comportement de SQL Server 2019.