web-dev-qa-db-ja.com

SQL Serverプロファイラーに相当するPostgreSQLはありますか?

PostgreSQLサーバーに送信されたクエリを確認する必要があります。通常、SQL Serverプロファイラーを使用してSQL Serverランドでこのアクションを実行しますが、PostgreSQLでこれを行う方法はまだわかりません。かなりの数の有料ツールがあるように見えますが、オープンソースの亜種があることを望んでいます。

72
BozoJoe

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

51
Joshua Smith

ジョシュアの答えに加えて、 どのクエリが現在実行されているか を表示するには、いつでも次のステートメントを発行するだけです(たとえば、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)
28
vladr

PgBadger( http://dalibo.github.io/pgbadger/ )を発見しました。これは私の人生を何度も救った素晴らしいツールです。レポートの例を次に示します。 http://dalibo.github.io/pgbadger/samplev4.html 。開いて「トップ」メニューに移動すると、最も遅いクエリと時間のかかるクエリが表示されます。その後、詳細を尋ねると、クエリを1時間ごとに表示する素敵なグラフを見ることができます。詳細ボタンを使用すると、きれいな形式でSQLテキストを見ることができます。したがって、このツールは無料で完璧であることがわかります。

23

PostgreSQLサーバーに送信されたクエリを確認する必要があります

オプションとして、pgAdminを使用する場合(私の写真ではpgAdmin 4 v2.1です)。 「ダッシュボード」タブでクエリを確認できます: pgadmin4 query from application, dashboard

6
Andrew Kotov

ジョシュアとヴラドルの答えに追加

わたしにはできる:

Postgresql.confを開きます

セット:

log_statement = 'mod'

log_min_messages = debug2

C:\ Program Files\PostgreSQL\9.6\data\pg_log \フォルダにある最後のログを開きます

クエリはそこにあります。

Postgresql-9.6.5-1を使用します

1
Henrique Lima