アプリケーションからデータベースに送信されるクエリを監視したいと思います。そのために、私はpg_stat_activity
を見つけましたが、多くの場合、「トランザクションで」読み取られた行が返されません。私は何か間違ったことをしている、クエリが届くのに十分な速さではない、混乱している、または上記のすべてのいずれかです!
誰かがPostgreSQLに対して実行されているクエリを監視するための最もばかげたことのない方法を推奨できますか?ある種の使いやすいUIベースのソリューション(例:SQL Serverの「プロファイラー」)を使用したいと思いますが、あまりにも選り好みではありません。
PostgreSQL 8.4以降では、contribモジュールpg_stat_statements を使用して、データベースサーバーのクエリ実行統計を収集できます。
このcontribモジュールpg_stat_statements.sql
(ubuntuでは/usr/share/postgresql/<version>/contrib
にあります)のSQLスクリプトをデータベースで実行し、このサンプル構成をpostgresql.conf
に追加します(再起動が必要です)。
custom_variable_classes = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top # top,all,none
pg_stat_statements.save = off
すべてのクエリまたは最小実行時間のクエリを表示するようにサーバーログを構成するだけで、どのクエリがリアルタイムで実行されるかを確認できます。これを行うには、postgresql.confで logging configuration parameterslog_statement
およびlog_min_duration_statement
を適宜設定します。
PgAdmin は、サーバーモニターと呼ばれる非常に使いやすいツールを提供します
(ツール->サーバーステータス)
残念ながら私自身は試していませんが、pgFouineで統計を表示できると思います。
リアルタイムでクエリを表示するのではなく、後でクエリのレポートを生成するように見えますが、おそらくまだ要求を満たしていますか?
あなたが見ることができます http://pgfouine.projects.postgresql.org/
pg_activity
は私たちが使用するものです。 https://github.com/dalibo/pg_activity
top
のようなインターフェースを備えた優れたツールです