2010-03-12 18 views
56

Ho bisogno di vedere le domande inviate a un server PostgreSQL. Normalmente userei SQL Server Profiler per eseguire questa azione su SQL Server land, ma devo ancora trovare come farlo in PostgreSQL. Sembra che ci siano parecchi strumenti di pagamento, spero che ci sia una variante open source.Esiste un equivalente PostgreSQL del profiler di SQL Server?

risposta

47

È possibile utilizzare l'impostazione log_statement config per ottenere l'elenco di tutte le query a un server

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

Basta impostare questo, e il percorso del file di registrazione e avrete la lista. È inoltre possibile configurarlo per registrare solo query a esecuzione prolungata.

È quindi possibile prendere quelle query ed eseguire ESPLORA su di esse per scoprire cosa sta succedendo con loro.

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

+1

perfetta, ha gettato un tail -f contro di essa – BozoJoe

27

aggiunta alla risposta di Joshua, per vedere which queries are currently running semplicemente rilasciare la seguente dichiarazione in qualsiasi momento (ad esempio, in una finestra di query di pgAdminIII):

SELECT datname,procpid,current_query FROM pg_stat_activity; 

Esempio di uscita:

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

Con la mia versione di PG (9.3), ho usato la seguente interrogazione: SELECT datname, pid, usename, APPLICATION_NAME, client_addr, query FROM pg_stat_activity; pg_stat_activity è una vista del DB 'postgresql' – mrmuggles

+1

SELECT client_addr, state_change, query FROM pg_stat_activity; – Dmitry

21

Ho scoperto pgBadger (http://dalibo.github.io/pgbadger/) ed è uno strumento fantastico che mi ha salvato la vita molte volte. Ecco un esempio di rapporto: http://dalibo.github.io/pgbadger/samplev4.html. Se lo apri e vai al menu 'top' puoi vedere le query più lente e le query che richiedono molto tempo. Quindi puoi chiedere i dettagli e vedere i grafici che ti mostrano le query per ora e se usi il pulsante di dettaglio puoi vedere il testo SQL in una forma carina. Quindi posso vedere che questo strumento è gratuito e perfetto.

+1

Strumento molto carino. Ho usato questo tutorial per installarlo, dato che il documento ufficiale è piuttosto dettagliato: https://www.dhis2.org/analysing-postgresql-logs-using-pgbadger – mrmuggles

+0

Solo una nota, che lo strumento è solo per sistemi * nix, che fa schifo agli utenti di Windows –

0

Aggiungendo a Joshua e la risposta di vladr

funziona per me:

Aprire postgresql.conf

Set:

log_statement = 'mod'

log_min_messages = debug2

Aprire l'ultimo registro a t cartella C: \ Programmi \ PostgreSQL \ 9.6 \ data \ pg_log \

Le domande ci saranno.

io uso postgresql-9.6.5-1

Problemi correlati