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 pas mal d’outils payants, j’espère qu’il existe une variante open source.
Vous pouvez utiliser le paramètre de configuration log_statement pour obtenir la liste de toutes les requêtes adressées à un serveur.
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
Il suffit de définir cela et le chemin du fichier de journalisation et vous aurez la liste. Vous pouvez également le configurer pour ne consigner que les requêtes longues.
Vous pouvez ensuite prendre ces requêtes et exécuter EXPLAIN sur celles-ci pour savoir ce qui se passe avec elles.
https://www.postgresql.org/docs/9.2/static/using-explain.html
En ajoutant à la réponse de Joshua, pour voir les requêtes 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 exemple de rapport: http://dalibo.github.io/pgbadger/samplev4.html . Si vous l'ouvrez et allez dans le menu "en haut", vous pouvez voir les requêtes les plus lentes et l'heure. consommer des requêtes. Ensuite, vous pouvez demander des détails et voir les beaux graphiques qui affichent les requêtes par heure. Si vous utilisez le bouton de détail, vous pouvez voir le texte SQL sous une belle forme. Je peux donc voir que cet outil est gratuit et parfait.
Ajout à la réponse de Josué et Vladr
Ça marche pour moi:
Ouvrez postgresql.conf
Ensemble:
log_statement = 'mod'
log_min_messages = debug2
Ouvrez le dernier journal dans le dossier C:\Program Files\PostgreSQL\9.6\data\pg_log \.
Les questions seront là.
J'utilise postgresql-9.6.5-1