Existe-t-il un équivalent PostgreSQL de SQL Server profiler?

J’ai besoin de voir les requêtes soumises à un serveur PostgreSQL. Normalement, j’utiliserais le profileur SQL Server pour effectuer cette action dans SQL Server Land, 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 sur 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 de longue durée.

    Vous pouvez alors prendre ces requêtes et lancer EXPLAIN pour savoir ce qui se passe avec elles.

    https://www.postgresql.org/docs/9.2/static/using-explain.html

    Ajout de 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; 

    Sortie de l’échantillon:

      datname | procpid | current_query ---------------+---------+--------------- mydatabaseabc | 2587 |  anotherdb | 15726 | SELECT * FROM users WHERE id=123 ; mydatabaseabc | 15851 |  (3 rows) 

    J’ai découvert pgBadger ( http://dalibo.github.io/pgbadger/ ) et c’est un outil fantastique qui m’a sauvé la vie de nombreuses fois. Voici un exemple de rapport: http://dalibo.github.io/pgbadger/samplev4.html . Si vous l’ouvrez et accédez au menu ‘top’, vous pouvez voir les requêtes les plus lentes et les requêtes les plus longues. Ensuite, vous pouvez demander des détails et voir des graphiques sympas qui vous montrent les requêtes par heure et 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.

    J’ai besoin de voir les requêtes soumises sur 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”: requête pgadmin4 depuis l'application, tableau de bord

    Ajouter à la réponse de Joshua 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 requêtes seront là.

    J’utilise postgresql-9.6.5-1