Campaign Classic V7 - Qu’est-ce que le module db pg_stat_statement ? À quoi sert-il ?

Description

  1. Présentation du module db pg_stat_statements?

  2. Pourquoi l’activation est-elle demandée par les clients ?

  3. Comment est-il activé ?

Résolution

  1. Le pg_stat_statements module permet de suivre les statistiques d'exécution de toutes les instructions SQL exécutées par un serveur.

    Le module doit être chargé en ajoutant pg_stat_statements to shared_preload_libraries in postgresql.conf, car il nécessite une mémoire partagée supplémentaire. Cela signifie qu’un redémarrage du serveur est nécessaire pour ajouter ou supprimer le module.

    Lien : https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. Pour mettre en oeuvre un schéma de type vue sur cette table qui nous permet de suivre les requêtes qui prennent du temps. Les clients pourront ainsi les régler et optimiser les performances.

    Cette extension fournit des mesures sur l’exécution des requêtes : qui sont les requêtes les plus fréquemment exécutées et la durée de chacune d’elles.

  3. pg_stat_statements

    1. Vérifiez que PostgreSQL officiel contrib Le package de la version postgres est installé.

      $ dpkg -l | grep postgres
       postgresql-contrib-9.3
      

      S’il n’est pas installé, installez-le.

      $ apt-get install postgresql-contrib-9.3
      
    2. Modifier postgresql.conf précharger le module au démarrage

      Valeur par défaut : shared_preload_libraries = ''

      Nouveau: shared_preload_libraries = 'pg_stat_statements'

      Si vous utilisez les deux pg_stat_statements et auto_explain, utilisez un enregistrement ONE et séparez-le par des virgules :

      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. Dans la base de données que vous souhaitez surveiller, exécutez CREATE query :

      Aucune création d’extension requise pour auto_explain, uniquement pour pg_stat_statements

      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. Dans la section OPTIONS personnalisées de postgresql.conf, ajoutez les lignes :

      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. Redémarrer le service postgresql

Exemple : Obtenir les 5 requêtes les plus coûteuses dans les bases de données

SELECT query, calls, total_time, rows, 100.0\*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent
 from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid
 where d.datname = 'Database_Name'
 order by total_time desc limit 5;

Sur cette page