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.
database
sql
postgresql
Jin Kim
quelle
quelle
Antworten:
Die Konfigurationsoption, nach der Sie suchen, ist
log_statement = "all"
(wenn Sie nur die Anweisungen wollen) oderlog_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 .quelle
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 handeltDas
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.quelle
auto_explain
, es ist in der Liste der gesegneten Module. Weitere Informationen findenNatü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.
Beispielberichte: hier und hier .
quelle