Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Surveillance de l'espérance de vie des pages dans SQL Server

La métrique SQL Server Page Life Expectancy (PLE) a longtemps été considérée comme un indicateur de performance clé pour les administrateurs de base de données qui examinent la santé globale de leurs instances de base de données. PLE indique si le système est soumis à une pression de mémoire interne à l'aide des compteurs fournis par l'objet Buffer Manager.

Un examen plus approfondi de l'espérance de vie des pages

PLE est une mesure de la durée (en secondes) pendant laquelle une page de fichier de données devrait rester dans le pool de mémoire tampon de SQL Server. Cette métrique n'est pas un agrégat ou une accumulation, mais simplement une valeur ponctuelle que les administrateurs de bases de données interrogeront auprès du gestionnaire de tampons.

SQL Server ne lit que les pages de données du pool de mémoire tampon (c'est-à-dire la lecture logique), donc si la page n'est pas dans le pool de mémoire tampon, il la trouve sur le disque (c'est-à-dire la lecture physique) et déplace la page vers le pool de mémoire tampon afin il peut faire une lecture logique. Ce processus prend du temps et peut affecter négativement les performances.

Qu'est-ce qu'une "bonne" valeur PLE ?

Une valeur PLE élevée signifie qu'une page reste plus longtemps dans le pool de mémoire tampon, de sorte que SQL Server est moins susceptible d'avoir à accéder au disque pour rechercher la page de données, ce qui accélère le fonctionnement du système.

Historiquement, les administrateurs de bases de données considéraient 300 secondes (cinq minutes) comme le point idéal du PLE. Cependant, ce nombre est assez arbitraire. Microsoft recommandait 300 comme norme PLE dans les années 2000 lorsque la mémoire était limitée.

Aujourd'hui, les administrateurs de base de données ne se concentrent pas sur un « bon » nombre, car les compartiments de mémoire sont standard sur la plupart des systèmes. Il n'est pas rare que SQL Server s'exécute sur un système disposant de plusieurs To de RAM. Les administrateurs de base de données ont donc adopté une approche basée sur des formules pour identifier une "bonne" valeur PLE :

Espérance de vie de page =300 secondes pour chaque 4 Go de RAM sur votre serveur

Cependant, il est sans doute plus important de surveiller en permanence les valeurs PLE pour les changements de cohérence afin que vous puissiez identifier les problèmes de mémoire et les résoudre rapidement.

Si vous travaillez avec un grand volume de données, il est important de noter que les gros serveurs ont souvent plusieurs PLE. Chaque nœud d'accès mémoire non uniforme (NUMA) obtient sa propre valeur PLE, puis ces nombres sont calculés pour obtenir la valeur PLE du serveur. Par exemple, prenez la valeur PLE du nœud x 1 000 (faites cela pour tous les nœuds NUMA). Additionnez les valeurs de tous les nœuds, puis divisez par le nombre total de nœuds NUMA, puis divisez à nouveau par 1 000. Cela vous donnera le serveur PLE.

Comment déterminer s'il y a un problème avec l'espérance de vie des pages

Les fluctuations du PLE sont normales car elles sont basées sur la charge de travail. Le suivi des tendances haute, moyenne et basse peut vous indiquer si certains processus, comme les analyses de table ou le vidage du cache de tampon, doivent être réglés pour améliorer PLE.

Un bon moyen de déterminer s'il y a un problème est de savoir si la plage de valeurs PLE normale chute et reste basse. Cela indique qu'il y a probablement une augmentation de la demande et de la pression sur le pool de mémoire tampon.

Cela signifie-t-il que vous devez jeter un peu plus de mémoire sur le problème ? Peut-être. Peut-être pas.

Résoudre les problèmes liés à la faible espérance de vie des pages SQL Server

Il existe plusieurs raisons pour lesquelles les valeurs PLE peuvent avoir tendance à baisser. Il est important de résoudre le problème car la solution n'est pas la même pour toutes les causes profondes. Voici trois des coupables les plus susceptibles de ralentir votre PLE :

Mémoire insuffisante

Si la charge de travail augmente régulièrement et que le PLE diminue, vous manquez probablement de mémoire. L'ajout de mémoire peut aider à augmenter le PLE, mais cela ne rendra pas les requêtes plus efficaces.

Opérations coûteuses

Si la charge de travail n'a pas changé, mais qu'il y a une demande accrue sur le pool de mémoire tampon, il se peut que les valeurs aberrantes utilisent plus de mémoire. Vérifiez si des tâches de maintenance sont en cours d'exécution ou si des reconstructions d'index sont en cours.

Statistiques obsolètes

Les statistiques obsolètes peuvent entraîner des modifications du plan de requête. Cela augmente la demande sur le pool de mémoire tampon en provoquant l'exécution d'opérations coûteuses car elles ne sont pas synchronisées avec les nouvelles statistiques.

Comment corriger la faible espérance de vie des pages en optimisant les requêtes

La meilleure façon de corriger les valeurs PLE basses est d'aller à la source et d'optimiser vos requêtes SQL Server. Cela s'accompagne d'un bonus supplémentaire, car l'optimisation des requêtes améliorera en même temps les performances globales de votre système.

Il y a plusieurs choses que vous voudrez faire qui vous aideront à optimiser les requêtes pour une amélioration maximale de PLE :

  • Supprimer les index inutilisés
  • Fusionner les index en double
  • Recherchez les requêtes volumineuses
  • Savoir ce qu'il y a dans le pool de mémoire tampon
  • Défragmenter les index
  • Mettre à jour les statistiques
  • Purger les données

Suivi de l'espérance de vie des pages au fil du temps

Bien que le PLE soit une mesure ponctuelle, l'examen du PLE au fil du temps est un moyen important d'identifier rapidement les problèmes et de les résoudre rapidement avant que les performances ne soient affectées de manière significative.

Il existe de nombreuses façons de surveiller la métrique PLE dans le temps et d'identifier les requêtes dont les transactions entraînent un grand nombre de lectures. Les DMV et les événements étendus dans SQL Server sont les méthodes éprouvées et ont joué un rôle déterminant dans ce processus de collecte de données. Mais ils sont également manuels et chronophages, et ils offrent des avantages limités lorsqu'il s'agit d'obtenir une perspective historique sur les performances des métriques au fil du temps.

Une solution commerciale telle que Spotlight Cloud offre non seulement aux DBA la possibilité de suivre PLE au fil du temps dès la sortie de la boîte, mais elle analyse également la charge de travail pour identifier les requêtes et les activités aberrantes qui provoquent une pression sur le pool de mémoire tampon afin que vous puissiez isoler et corriger le problème et optimisez les performances de votre serveur SQL.

Publié initialement en avril 2019 et mis à jour en septembre 2020.