J'ai besoin de voir les requêtes soumises à un serveur PostgreSQL. Normalement, j'utiliserais SQL Server profiler pour effectuer cette action dans SQL Server terrain, mais je dois encore trouver comment faire dans PostgreSQL. Il semble y avoir pas mal d'outils payants, j'espère qu'il existe une variante open source.Existe-t-il un équivalent PostgreSQL du profileur SQL Server?
Répondre
Vous pouvez utiliser le paramètre de configuration log_statement pour obtenir la liste de toutes les requêtes à un serveur
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
Il suffit de définir que, et le chemin du fichier de journalisation et vous aurez la liste. Vous pouvez également le configurer pour ne consigner que les longues requêtes en cours d'exécution.
Vous pouvez ensuite prendre ces requêtes et lancer EXPLAIN sur eux pour savoir ce qui se passe avec eux.
http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2
Ajout à la réponse de Joshua, pour voir which queries are currently running simplement publier la déclaration 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)
Avec ma version de PG (9.3), j'utilise la requête suivante: SELECT datname, pid, usename, application_name, client_addr, requête FROM pg_stat_activity; pg_stat_activity est une vue de la base de données 'postgresql' – mrmuggles
SELECT client_addr, state_change, requête FROM pg_stat_activity; – Dmitry
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 'top', vous pouvez voir les requêtes les plus lentes et les requêtes qui prennent beaucoup de temps. Ensuite, vous pouvez demander des détails et voir de beaux graphiques qui vous montrent les requêtes par heure et si vous utilisez le bouton de détail, vous pouvez voir le texte SQL dans un joli formulaire. Donc je peux voir que cet outil est gratuit et parfait.
Assez joli outil. J'ai utilisé ce tutoriel pour l'installer, comme le doc officiel est assez verbeux: https://www.dhis2.org/analysing-postgresql-logs-using-pgbadger – mrmuggles
Juste une note, que l'outil est pour les systèmes * nix seulement, qui craint pour les utilisateurs de Windows –
Ajouter à Joshua et la réponse de vladr
Il fonctionne pour moi:
postgresql.conf Ouvrir
Set:
log_statement = 'mod'
log_min_messages = debug2
Ouvrir le dernier journal t dossier C: \ Program Files \ PostgreSQL \ 9.6 \ data \ pg_log \
Les requêtes seront là.
J'utilise postgresql-9.6.5-1
parfait, a jeté une queue -f contre – BozoJoe