web-dev-qa-db-fra.com

Une application pour surveiller les requêtes PostgreSQL en temps réel?

J'aimerais contrôler les requêtes envoyées à ma base de données à partir d'une application. À cette fin, j'ai trouvé pg_stat_activity, mais le plus souvent, les lignes renvoyées sont lues "en transaction". Soit je fais quelque chose de mal, je ne suis pas assez rapide pour voir les requêtes arriver, je suis confus, ou tout ce qui précède!

Quelqu'un peut-il recommander le moyen le plus sûr pour surveiller les requêtes exécutées contre PostgreSQL? Je préférerais une sorte de solution conviviale basée sur une interface utilisateur (exemple: le "profileur" de SQL Server), mais je ne suis pas trop exigeant.

20
Russell Christopher

Avec PostgreSQL 8.4 ou supérieur, vous pouvez utiliser le module contrib pg_stat_statements pour collecter les statistiques d’exécution de la requête du serveur de base de données.

Exécutez le script SQL de ce module contrib pg_stat_statements.sql (sur ubuntu, il se trouve dans /usr/share/postgresql/<version>/contrib) dans votre base de données et ajoutez cet exemple de configuration à votre postgresql.conf (nécessite un redémarrage):

custom_variable_classes = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top # top,all,none
pg_stat_statements.save = off

Pour voir quelles requêtes sont exécutées en temps réel, vous pouvez configurer le journal du serveur pour afficher toutes les requêtes ou requêtes avec un temps d'exécution minimum. Pour ce faire, définissez les paramètres de configuration logginglog_statement et log_min_duration_statement dans votre postgresql.conf en conséquence.

17
tscho

PgAdmin offre un outil assez facile à utiliser appelé moniteur du serveur

(Outils -> ServerStatus)

25
ertx

Malheureusement, je n'ai pas essayé moi-même, mais je pense que pgFouine peut vous montrer des statistiques.

Bien que, apparemment, il ne vous montre pas les requêtes en temps réel, mais génère plutôt un rapport de requêtes après, peut-être qu'il répond toujours à votre demande?

Vous pouvez consulter http://pgfouine.projects.postgresql.org/

0
Patrick