web-dev-qa-db-ja.com

Postgres:データベースサーバーによって実行されているすべてのSQLステートメントを確認するにはどうすればよいですか?

パフォーマンス上の理由から、アプリケーションがデータベースに対して行うすべてのSQLステートメントを確認しているところです。 PostgreSQLデータベースサーバーによって実行されるすべてのステートメントをログに記録する簡単な方法はありますか?ありがとう。

23
Jin Kim

あなたが探している設定オプションはlog_statement = "all"(ステートメントだけが必要な場合)、またはlog_min_statement_duration = <some number>「遅い」クエリの直後の場合(「遅い」値の場合)。ロギング構成の詳細については、 http://www.postgresql.org/docs/current/static/runtime-config-logging.html を参照してください。

27
womble

auto_explainモジュールはこのために非常に便利です。ステートメントをログに記録するだけでなく、その実行計画をログに記録し、PL/PgSQL関数内で実行されたステートメントをログに記録することもできます。分析を有効にしない限り、パフォーマンスへの影響はかなり低くなります。この場合、すべてのクエリでかなりのタイミングオーバーヘッドが発生します。

見る - auto_explain はドキュメントにあります。

5
Craig Ringer

もちろん、自分で最も遅いクエリを検出することもできますが、 pgFouine — PostgreSQLログアナライザを使用することをお勧めします。インストールが簡単で本当に便利です。

サンプルレポート: here および here

3
Severe_admin