web-dev-qa-db-fra.com

Existe-t-il un équivalent PostgreSQL du profileur SQL Server?

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.

67
BozoJoe

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

49
Joshua Smith

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)
28
vladr

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.

22
Giovanni Porcari

J'ai besoin de voir les requêtes soumises à un serveur PostgreSQL

En option, si vous utilisez pgAdmin (sur ma photo, c'est pgAdmin 4 v2.1). Vous pouvez observer les requêtes via l'onglet "Tableau de bord":  pgadmin4 query from application, dashboard

4
Andrew Kotov

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

0
Henrique Lima