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
È 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
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)
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.
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
Solo una nota, che lo strumento è solo per sistemi * nix, che fa schifo agli utenti di Windows –
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
perfetta, ha gettato un tail -f contro di essa – BozoJoe