¿Hay un equivalente PostgreSQL de SQL Server profiler?


Necesito ver las consultas enviadas a un servidor PostgreSQL. Normalmente usaría SQL Server profiler para realizar esta acción en SQL Server land, pero aún no he encontrado cómo hacerlo en PostgreSQL. Parece que hay bastantes herramientas de pago, espero que haya una variante de código abierto.

Author: Răzvan Flavius Panda, 2010-03-12

5 answers

Puede usar la configuración log_statement para obtener la lista de todas las consultas a un servidor

Https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

Simplemente establezca eso, y la ruta del archivo de registro y tendrá la lista. También puede configurarlo para que solo registre consultas de larga duración.

Luego puede tomar esas consultas y ejecutar EXPLAIN en ellas para averiguar qué está pasando con ellos.

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

 48
Author: Joshua Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-29 22:24:53

Agregando a la respuesta de Joshua, para ver qué consultas se están ejecutando actualmente simplemente emita la siguiente declaración en cualquier momento (por ejemplo, en la ventana de consulta de pgAdminIII):

SELECT datname,procpid,current_query FROM pg_stat_activity;

Salida de muestra:

     datname    | procpid | current_query
 ---------------+---------+---------------
  mydatabaseabc |    2587 | <IDLE>
  anotherdb     |   15726 | SELECT * FROM users WHERE id=123 ;
  mydatabaseabc |   15851 | <IDLE>
 (3 rows)
 27
Author: vladr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-12 06:12:32

Descubrí pgBadger (http://dalibo.github.io/pgbadger/) y es una herramienta fantástica que me salvó la vida muchas veces. He aquí un ejemplo de informe: http://dalibo.github.io/pgbadger/samplev4.html . Si lo abres y vas al menú 'superior' puedes ver las consultas más lentas y las consultas que consumen mucho tiempo. A continuación, puede pedir detalles y ver gráficos agradables que le muestran las consultas por hora y si utiliza el botón de detalle se puede ver el texto SQL en una forma bonita. Así que puedo ver que esto la herramienta es gratuita y perfecta.

 21
Author: Giovanni Porcari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-20 20:15:52

Necesito ver las consultas enviadas a un servidor PostgreSQL

Como opción, si usas pgAdmin (en mi foto es pgAdmin 4 v2.1). Puede observar las consultas a través de la pestaña" Dashboard": pgadmin4 consulta de la aplicación, panel de control

 2
Author: Andrew Kotov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-07 16:46:03

Añadiendo a la respuesta de Josué y vladr

Funciona para mí:

Abre postgresql.conf

Conjunto:

Log_statement = ' mod '

Log_min_messages = debug2

Abrir el último registro en la carpeta C:\Program Files\PostgreSQL \ 9.6 \ data\pg_log \

Las consultas estarán allí.

Uso postgresql-9.6.5-1

 0
Author: Henrique Lima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-04 16:47:44