Obtenez des statistiques sur les requêtes à exécution lente

10

Mon application de base de données exécute de nombreuses requêtes différentes. J'ai réglé log_min_duration_statementà 1000. Mais les requêtes enregistrées là-bas ne sont pas toujours lentes, la plupart du temps elles ne prennent que quelques ms.

Est-il possible d'obtenir une statistique de toutes les requêtes et combien de fois elles ont pris plus de 1000 ms?

user2047809
la source
1
Voyez si cela aide: le paramètre log_min_duration_statement est ignoré . Ou vous avez oublié de recharger la configuration après avoir modifié le paramètre.
Daniel Vérité

Réponses:

11

Installez l'extension pg_stat_statements avec la commande SQL

CREATE EXTENSION pg_stat_statements

Vous voudrez peut-être vous assurer de le créer en utilisant un utilisateur approprié (tel que l'utilisateur utilisé par votre application ou un compte dba). Sachez que l'utilisateur qui crée l'extension en sera également propriétaire.

Cela nécessitera un redémarrage du serveur pour qu'il soit utilisable (car vous devez modifier légèrement la configuration dans postgresql.conf qui affecte la consommation de mémoire), mais cela vous donnera des statistiques sur toutes les requêtes.

Veuillez consulter la page de documentation pour plus d'informations sur ce que pg_stat_statements fournit. Voir ici pour une référence rapide sur la configuration du fichier de configuration postgresql.conf pour pg_stat_statements.

Une fois que vous l'avez installé et exécuté, vous pouvez afficher les statistiques en interrogeant la vue pg_stat_statements.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Joishi Bodio
la source
2

Comment @JoishiBodio a déclaré que vous pouvez utiliser l' pg_stat_statementsextension pour voir les statistiques des requêtes lentes. Pour ceux qui ont du mal avec l'installation (comme moi):

  1. Vérifiez si pg_stat_statementsest dans la liste des extensions disponibles:

    SELECT * FROM pg_available_extensions;
  2. Essayez d'installer le postgresql-contribpackage via votre gestionnaire de packages système, sur Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Répétez ensuite l'étape 1.

  1. Ajoutez pg_stat_statementsà shared_preload_librariesdans la configuration PostgreSQL:

via postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

via des arguments de ligne de commande (sans guillemets!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Créez ensuite l'extension dans une base de données:

    CREATE EXTENSION pg_stat_statements;
Andrey Semakin
la source