Aus Gründen der Leistung überprüfe ich derzeit jede SQL-Anweisung, die eine Anwendung für die Datenbank abgibt. Gibt es eine einfache Möglichkeit, alle Anweisungen zu protokollieren, die vom PostgreSQL-Datenbankserver ausgeführt werden? Vielen Dank.
Aus Gründen der Leistung überprüfe ich derzeit jede SQL-Anweisung, die eine Anwendung für die Datenbank abgibt. Gibt es eine einfache Möglichkeit, alle Anweisungen zu protokollieren, die vom PostgreSQL-Datenbankserver ausgeführt werden? Vielen Dank.
Antworten:
Die Konfigurationsoption, nach der Sie suchen, ist log_statement = "all"
(wenn Sie nur die Anweisungen wollen) oder log_min_statement_duration = <some number>
wenn Sie nur nach "langsamen" Abfragen suchen (für einen bestimmten Wert von "langsam"). Weitere Informationen zur Protokollierungskonfiguration finden Sie unter http://www.postgresql.org/docs/current/static/runtime-config-logging.html .
explain analyze
, um das Ergebnis einer langsamen Abfrage bei der Ausführung zu erhalten. Vielleicht möchten Sie mit dem Testen beginnen, da 8.4 noch nicht veröffentlicht ist, aber es ist eine nette Option, um zu wissen, dass dies zum Zeitpunkt der Ausführung passierte Wenn die EXPLAIN-Ausgabe für die Analyse in Ordnung ist, treten wahrscheinlich Probleme mit E / A- oder CPU-Grenzen auf, aber zumindest wissen Sie, dass es sich nicht um die eigentliche Abfrage handelt
Das auto_explain
Modul ist dafür sehr nützlich. Es protokolliert nicht nur die Anweisungen, sondern auch deren Ausführungspläne und kann sogar Anweisungen protokollieren, die in PL / PgSQL-Funktionen ausgeführt werden. Die Leistungseinbußen sind relativ gering, es sei denn, Sie aktivieren die Analyse. In diesem Fall entsteht für alle Abfragen ein erheblicher Zeitaufwand.
Siehe auto_explain
in der Dokumentation.
auto_explain
, es ist in der Liste der gesegneten Module. Weitere Informationen finden
Natürlich können Sie die langsamsten Abfragen selbst ermitteln, aber ich rate Ihnen, pgFouine zu verwenden - einen PostgreSQL-Protokollanalysator. Es ist einfach zu installieren und sehr nützlich.