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


84

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

回答:


59

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


1
完璧、それに対してテール-fを投げた
BozoJoe 2010年

6
まあ、.CSVログは、「SQL Serverのプロファイラと同等のものを」ファイル呼び出すことがそのハード...
Feofilakt

31

Joshuaの回答に加えて、現在実行されているクエリを確認するには、いつでも次のステートメントを発行するだけです(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)

4
私のバージョンのPG(9.3)では、次のクエリを使用しました。SELECTdatname、pid、usename、application_name、client_addr、query FROM pg_stat_activity; pg_stat_activityは、
DB'postgresql

3
SELECT client_addr、state_change、query FROM pg_stat_activity;
Dmitry Dyachkov 2016年

3
「クエリ」列の長さが短すぎて、長いクエリを表示できません。
デヤンJanjušević

25

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


2
かなりいいツールです。公式ドキュメントはかなり冗長なので、このチュートリアルを使用してインストールしました:dhis2.org/analysing-postgresql-logs-using-pgbadger
mrmuggles

5
Windowsユーザーのために吸うツールのみ* nixシステムのためのものであることだけで、ノート、
アレックス・クラウス

OPが必要なパフォーマンス情報を手動で抽出するための構成オプションではなくSQLServerプロファイラーのようなツールを要求したため+1。
EAmez

17

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

オプションとして、pgAdminを使用する場合(私の写真ではpgAdmin 4 v2.1です)。[ダッシュボード]タブからクエリを確認できます。 アプリケーション、ダッシュボードからのpgadmin4クエリ


2
これは長いSQLステートメントを表示できません。SQLは切り捨てられます。
デヤンJanjušević

0

pg_stat_statementsを使用できます拡張機能。

dockerでdbを実行している場合はdocker-compose.yml、このコマンドをに追加するだけです。それ以外の場合は、セットアップのインストール手順を確認してください。

command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200

次に、データベースで次のクエリを実行します。

CREATE EXTENSION pg_stat_statements;

次に、実行に時間がかかった操作を確認します。

SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;

または、そのビューで他のクエリを試して、探しているものを見つけてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.