PostgreSQLサーバーに送信されたクエリを確認する必要があります。通常、SQL Serverプロファイラーを使用してSQL Serverランドでこのアクションを実行しますが、PostgreSQLでこれを行う方法はまだわかりません。かなりの数の有料ツールがあるように見えますが、オープンソースの亜種があることを望んでいます。
Log_statement構成設定を使用して、サーバーへのすべてのクエリのリストを取得できます。
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
それと、ロギングファイルのパスを設定するだけで、リストが表示されます。また、長時間実行されているクエリのみを記録するように構成することもできます。
その後、これらのクエリを取得し、それらに対してEXPLAINを実行して、それらで何が起こっているのかを確認できます。
https://www.postgresql.org/docs/9.2/static/using-explain.html
ジョシュアの答えに加えて、 どのクエリが現在実行されているか を表示するには、いつでも次のステートメントを発行するだけです(たとえば、PGAdminIIIのクエリウィンドウで):
SELECT datname,procpid,current_query FROM pg_stat_activity;
サンプル出力:
datname | procpid | current_query
---------------+---------+---------------
mydatabaseabc | 2587 | <IDLE>
anotherdb | 15726 | SELECT * FROM users WHERE id=123 ;
mydatabaseabc | 15851 | <IDLE>
(3 rows)
PgBadger( http://dalibo.github.io/pgbadger/ )を発見しました。これは私の人生を何度も救った素晴らしいツールです。レポートの例を次に示します。 http://dalibo.github.io/pgbadger/samplev4.html 。開いて「トップ」メニューに移動すると、最も遅いクエリと時間のかかるクエリが表示されます。その後、詳細を尋ねると、クエリを1時間ごとに表示する素敵なグラフを見ることができます。詳細ボタンを使用すると、きれいな形式でSQLテキストを見ることができます。したがって、このツールは無料で完璧であることがわかります。
ジョシュアとヴラドルの答えに追加
わたしにはできる:
Postgresql.confを開きます
セット:
log_statement = 'mod'
log_min_messages = debug2
C:\ Program Files\PostgreSQL\9.6\data\pg_log \フォルダにある最後のログを開きます
クエリはそこにあります。
Postgresql-9.6.5-1を使用します