
パフォーマンス上の理由から、アプリケーションがデータベースに対して実行するすべての SQL ステートメントを確認中です。PostgreSQL データベース サーバーによって実行されるすべてのステートメントをログに記録する簡単な方法はありますか? よろしくお願いします。
答え1
探している設定オプションはlog_statement = "all"
(ステートメントだけが必要な場合)、またはlog_min_statement_duration = <some number>
「遅い」クエリだけが必要な場合(「遅い」の値の場合)です。http://www.postgresql.org/docs/current/static/runtime-config-logging.htmlログ設定の詳細については、こちらをご覧ください。
答え2
このauto_explain
モジュールは、この目的に非常に役立ちます。ステートメントをログに記録するだけでなく、その実行プランをログに記録し、PL/PgSQL 関数内で実行されるステートメントをログに記録することもできます。分析を有効にしない限り、パフォーマンスへの影響はかなり低くなりますが、分析を有効にすると、すべてのクエリに対してかなりのタイミング オーバーヘッドが発生します。
見るauto_explain
ドキュメントに記載されています。