J'ai besoin de voir les requêtes soumises à un serveur PostgreSQL. Normalement, j'utiliserais le profileur SQL Server pour effectuer cette action dans un environnement SQL Server, mais je n'ai pas encore trouvé comment le faire dans PostgreSQL. Il semble y avoir assez d'outils payants, j'espère qu'il existe une variante open source.
Réponses
Trop de publicités?Vous pouvez utiliser le log_statement paramètre de configuration pour obtenir la liste de toutes les requêtes vers un serveur
http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-LOG-STATEMENT
Juste régler cela, et le fichier de journalisation chemin et vous aurez la liste. Vous pouvez également le configurer pour se connecter uniquement des requêtes de longue durée.
Vous pouvez alors prendre ces requêtes et exécuter EXPLIQUER sur eux pour savoir ce qu'il se passe avec eux.
http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2
En ajoutant à la réponse de Joshua, pour voir quelles requêtes sont en cours d'exécution, émettez simplement l'instruction suivante à tout moment (par exemple dans la fenêtre de requête de PGAdminIII):
SELECT datname,procpid,current_query FROM pg_stat_activity;
Exemple de sortie:
datname | procpid | current_query
---------------+---------+---------------
mydatabaseabc | 2587 | <IDLE>
anotherdb | 15726 | SELECT * FROM users WHERE id=123 ;
mydatabaseabc | 15851 | <IDLE>
(3 rows)
J'ai découvert pgBadger (http://dalibo.github.io/pgbadger/) et c'est un outil fantastique qui m'a sauvé la vie plusieurs fois. Voici un exampke de rapport: http://dalibo.github.io/pgbadger/samplev4.html. Si vous l'ouvrez et aller à " top menu vous pouvez voir le plus lent des requêtes et le temps des requêtes. Ensuite, vous pouvez demander des détails et voir nice graphiques qui vous montrent les requêtes par heure et si vous utilisez le bouton détails, vous pouvez voir le texte sql dans une jolie forme. Donc, je peux voir que cet outil est gratuit et parfait.