2010-03-12 6 views
56

Ich muss die Anfragen an einen PostgreSQL-Server gesendet sehen. Normalerweise würde ich SQL Server-Profiler verwenden, um diese Aktion in SQL Server-Land durchzuführen, aber ich bin noch zu finden, wie dies in PostgreSQL zu tun. Es scheint einige Pay-for-Tools zu geben, ich hoffe, dass es eine Open-Source-Variante gibt.Gibt es ein PostgreSQL-Äquivalent des SQL Server-Profilers?

Antwort

47

Sie können die log_statement Konfigurationseinstellung verwenden, um die Liste aller Anfragen an einen Server

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

nur festgelegt, dass, und den Protokolldateipfad und Sie werden die Liste haben zu erhalten. Sie können es auch so konfigurieren, dass nur lang laufende Abfragen protokolliert werden.

Sie können diese Abfragen dann ausführen und EXPLAIN ausführen, um herauszufinden, was mit ihnen passiert.

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

+1

perfekt, ein tail -f dagegen – BozoJoe

27

zu Joshua Antwort, Hinzufügen von which queries are currently running einfach mit der folgenden Anweisung jederzeit zu sehen (zB in pgAdminIII Abfrage Fenster):

SELECT datname,procpid,current_query FROM pg_stat_activity; 

Beispielausgabe:

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

Mit meiner Version von PG (9,3) warf, habe ich die folgende Abfrage: SELECT datname, pid, usename, application_name, client_addr, Abfrage FROM pg_stat_activity; pg_stat_activity ist eine Ansicht der DB 'postgresql' – mrmuggles

+1

SELECT client_addr, state_change, Abfrage FROM pg_stat_activity; – Dmitry

21

Ich entdeckte pgBadger (http://dalibo.github.io/pgbadger/) und es ist ein fantastisches Werkzeug, das mein Leben viele Male rettete. Hier ist ein Beispiel für einen Bericht: http://dalibo.github.io/pgbadger/samplev4.html. Wenn Sie es öffnen und zum 'top' Menü gehen, können Sie die langsamsten Abfragen und die zeitaufwendigen Abfragen sehen. Dann können Sie Details fragen und sehen Sie schöne Grafiken, die Ihnen die Abfragen nach Stunden zeigen, und wenn Sie Detail-Schaltfläche verwenden, können Sie den SQL-Text in einer hübschen Form sehen. So kann ich sehen, dass dieses Werkzeug frei und perfekt ist.

+1

Ziemlich schönes Werkzeug. Ich habe dieses Tutorial verwendet, um es zu installieren, da das offizielle Dokument ziemlich ausführlich ist: https://www.dhis2.org/analysing-postgresql-logs-using-pgbadger – mrmuggles

+0

Nur ein Hinweis, dass das Tool nur für * nix-Systeme ist, was für Windows-Benutzer saugt –

0

zu Joshuas Hinzufügen und vladr Antwort

Es funktioniert für mich:

öffnen postgresql.conf

Set:

log_statement = 'mod'

log_min_messages = debug2

Öffnen Sie das letzte Protokoll a t Ordner C: \ Programme \ PostgreSQL \ 9.6 \ data \ pg_log \

Die Abfragen werden da sein.

Ich benutze postgresql-9.6.5-1

Verwandte Themen