2010-03-12 15 views
56

Necesito ver las consultas enviadas a un servidor PostgreSQL. Normalmente usaría el perfil de SQL Server para realizar esta acción en el servidor SQL, pero todavía no he encontrado cómo hacerlo en PostgreSQL. Parece haber bastantes herramientas de pago, estoy esperando que haya una variante de código abierto.¿Existe un equivalente PostgreSQL del perfilador de SQL Server?

Respuesta

47

Usted puede utilizar el ajuste log_statement config 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

Sólo hay que establecer eso, y la ruta del archivo de registro y usted tendrá la lista. También puede configurarlo para que solo registre consultas de larga ejecución.

A continuación, puede realizar esas consultas y ejecutar EXPLAIN en ellas para averiguar qué está pasando con ellas.

http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2

+1

perfecta, arrojó una cola -f contra ella – BozoJoe

27

Agregando a la respuesta de Josué, para ver which queries are currently running simplemente emitir 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; 

Muestra de salida:

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

Con mi versión de PG (9,3), que utilizó la siguiente consulta: SELECT datname, pid, usename, application_name, client_addr, consulta FROM pg_stat_activity; pg_stat_activity es una vista de la base de datos 'postgresql' – mrmuggles

+1

SELECCIONAR client_addr, state_change, query FROM pg_stat_activity; – Dmitry

21

Descubrí pgBadger (http://dalibo.github.io/pgbadger/) y es una herramienta fantástica que me salvó la vida muchas veces. Aquí hay un ejemplo de informe: http://dalibo.github.io/pgbadger/samplev4.html. Si lo abre y va al menú 'superior', puede ver las consultas más lentas y las consultas más lentas. Luego puede preguntar detalles y ver buenos gráficos que muestran las consultas por hora y si usa el botón de detalle puede ver el texto SQL en una forma bonita. Entonces puedo ver que esta herramienta es gratuita y perfecta.

+1

Herramienta bastante agradable. Utilicé este tutorial para instalarlo, ya que el documento oficial es bastante detallado: https://www.dhis2.org/analysing-postgresql-logs-using-pgbadger – mrmuggles

+0

Solo una nota, que la herramienta es solo para sistemas * nix, que apesta para los usuarios de Windows –

0

Agregando a Joshua y la respuesta de vladr

funciona para mí:

postgresql.conf abierto

Set:

log_statement = 'mod'

log_min_messages = debug2

Abra el último registro a t carpeta C: \ Archivos de programa \ PostgreSQL \ 9.6 \ data \ pg_log \

Las consultas estarán allí.

utilizo postgresql-9.6.5-1

Cuestiones relacionadas