Les opérations qui déclenchent une analyse de pool de mémoires tampons peuvent s’exécuter lentement sur les ordinateurs à mémoire volumineuse

Cet article décrit comment l’analyse du pool de mémoires tampons SQL Server peut prendre beaucoup de temps sur des ordinateurs à mémoire volumineuse.

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

Symptômes

Certaines opérations dans Microsoft SQL Server déclencher 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 qui disposent 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 l’analyse d’un pool de mémoires tampons

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

  • 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, nombre total de mémoires tampons itérées 204640239, temps d’attente 0 ms. Pour plus d’informations, consultez «https://go.microsoft.com/fwlink/?linkid=2132602 ».

É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 buffer_pool_scan_complete Étendu a été introduit pour vous aider à identifier les longues analyses du pool de mémoires tampons.

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

nom database_id elapsed_time_ms commande Opération scanned_buffers total_iterated_buffers
buffer_pool_scan_complete 7 1308 BACKUP DATABASE FlushCache 243 19932814

Remarque

Le seuil est dans le XEvent est plus petit pour vous permettre de capturer des informations avec une précision 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 propre mémoires tampons (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éexécution des données des fichiers de base de données sur le disque par les exécutions de requêtes suivantes. Ce processus d’accès aux données via les E/S de disque ralentit les requêtes.

Dans SQL Server 2022, ce problème est atténué, car les analyses du pool de mémoires tampons sont parallélisées en utilisant plusieurs cœurs. Il y aura une tâche pour 8 millions de mémoires tampons (64 Go) où une analyse en série sera toujours utilisée s’il y a moins de 8 millions de mémoires tampons. Pour plus d’informations, watch 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 grands pools de mémoires tampons, consultez SQL Server : grande RAM et point de contrôle de base de données.