Partager via


Les opérations qui déclenchent une analyse du pool de mémoires tampons peuvent s’exécuter lentement sur des ordinateurs de grande mémoire

Cet article explique comment l’analyse du pool de mémoires tampons SQL Server peut prendre beaucoup de temps pour se terminer sur les ordinateurs à mémoire volumineuse.

S'applique à : SQL Server
Numéro de base de connaissances d’origine : 4566579

Symptômes

Certaines opérations dans Microsoft SQL Server déclenchent une analyse du pool de mémoires tampons (le cache qui stocke les pages de base de données en mémoire). Sur les systèmes disposant d’une grande quantité de RAM (1 To de mémoire ou plus), l’analyse du pool de mémoires tampons peut prendre beaucoup de temps. Cela ralentit l’opération qui a déclenché l’analyse.

Opérations qui provoquent une analyse du pool de mémoires tampons

Voici quelques opérations qui peuvent déclencher une analyse de pool de mémoires tampons pour se produire :

  • Démarrage de la base de données
  • Arrêt ou redémarrage de la base de données
  • Basculement du groupe de disponibilité
  • Suppression de base de données (suppression)
  • Suppression de fichiers d’une base de données
  • Sauvegarde complète ou différentielle de base de données
  • Restauration de base de données
  • Restauration du journal des transactions
  • Restauration en ligne
  • DBCC CHECKDB ou DBCC CHECKTABLE opération

Le journal des erreurs indique qu’une analyse a pris beaucoup de temps

À compter de SQL Server 2016 SP3, SQL Server 2017 CU23 et SQL Server 2019 CU9, un message d’erreur a été ajouté au journal des erreurs SQL Server pour indiquer qu’une analyse du pool de mémoires tampons a pris beaucoup de temps (10 secondes ou plus) :

L’analyse du pool de mémoires tampons a pris 14 secondes : ID de base de données 7, commande « BACKUP DATABASE », opération « FlushCache », mémoires tampons analysées 115, mémoires tampons itérées totales 204640239, temps d’attente 0 ms. Consultez la rubrique « https://go.microsoft.com/fwlink/?linkid=2132602 » (éventuellement en anglais) pour plus d’informations.

Événement étendu pour diagnostiquer une analyse longue

En outre, à partir des mêmes builds SQL Server 2016 SP3, SQL Server 2017 CU23 et SQL Server 2019 CU9 , l’événement étendu buffer_pool_scan_complete a été introduit pour vous aider à identifier les analyses de pool de mémoires tampons longues.

Si une analyse prend plus de 1 seconde, le XEvent est enregistré comme suit lorsque l’événement est activé.

nom database_id elapsed_time_ms commande operation scanned_buffers total_iterated_buffers
buffer_pool_scan_complete 7 1308 BACKUP DATABASE FlushCache 243 19932814

Note

Le seuil est dans le XEvent est plus petit pour vous permettre de capturer des informations à une granularité plus fine.

Solution de contournement

Avant SQL Server 2022, il n’y avait aucun moyen d’éliminer ce problème. Il n’est pas recommandé d’effectuer une action pour effacer le pool de mémoires tampons, car la suppression de tampons propres (DBCC DROPCLEANBUFFERS) du pool de mémoires tampons peut entraîner une dégradation significative des performances. La suppression des pages de base de données de la mémoire entraîne la réécriture des données des fichiers de base de données sur le disque. Ce processus d’accès aux données via les E/S de disque entraîne la lenteur des requêtes.

Dans SQL Server 2022, ce problème est atténué, car les analyses de pool de mémoires tampons sont parallélisées en utilisant plusieurs cœurs. Il y aura une tâche par 8 millions de mémoires tampons (64 Go) où une analyse série sera toujours utilisée s’il y a moins de 8 millions de mémoires tampons. Pour plus d’informations, regardez l’analyse parallèle du pool de mémoires tampons.

Plus d’informations

Pour plus d’informations sur les problèmes qui peuvent se produire dans les pools de mémoires tampons volumineux, consultez SQL Server : grande mémoire ram et point de contrôle de base de données.