Postgres: Wie kann ich alle SQL-Anweisungen sehen, die vom Datenbankserver ausgeführt werden?

Postgres: Wie kann ich alle SQL-Anweisungen sehen, die vom Datenbankserver ausgeführt werden?

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_explainModul 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_explainin der Dokumentation.

Antwort3

Natürlich können Sie die langsamsten Abfragen selbst erkennen, aber ich empfehle Ihnen,pgFouine— ein PostgreSQL-Log-Analysator. Er ist einfach zu installieren und wirklich nützlich.

Beispielberichte:HierUndHier.

verwandte Informationen