
Ich bin gerade dabei, aus Leistungsgründen jede SQL-Anweisung zu überprüfen, die eine Anwendung an die Datenbank sendet. Gibt es eine einfache Möglichkeit, alle Anweisungen zu protokollieren, die vom PostgreSQL-Datenbankserver ausgeführt werden? Danke.
Antwort1
Die Konfigurationsoption, nach der Sie suchen, ist log_statement = "all"
(wenn Sie nur die Anweisungen möchten) oder log_min_statement_duration = <some number>
wenn Sie nur nach „langsamen“ Abfragen suchen (für einen bestimmten Wert von „langsam“). Siehehttp://www.postgresql.org/docs/current/static/runtime-config-logging.htmlfür weitere Einzelheiten zur Protokollierungskonfiguration.
Antwort2
Das auto_explain
Modul ist hierfür sehr nützlich. Es protokolliert nicht nur die Anweisungen, sondern auch deren Ausführungspläne und kann sogar Anweisungen protokollieren, die innerhalb von PL/PgSQL-Funktionen ausgeführt werden. Der Leistungsverlust ist relativ gering, es sei denn, Sie aktivieren die Analyse. In diesem Fall entsteht ein ziemlich hoher Zeitaufwand für alle Abfragen.
Sehenauto_explain
in der Dokumentation.