2

私はPostgreSQLの初心者です。 これを見つけるのを手伝ってください。PostgreSQLで実行されたクエリの詳細を取得

私はその後、私は単純なクエリを行うテーブル

company (
    id bigint primary key, 
    name text, 
    age integer, 
    address character(50), 
    salary real, 
    gender character(1)) 

を持っている:

select * from company where address='texas' and salary=10000 
select * from company where address='texas' and salary=15000 
select * from company where address='houston' and salary=10000 
select * from company where address='texas' and salary=85000 
select * from company where address='norway' and salary=100 

どのように私は、実行されたクエリの詳細を取得することができ、例えば、クエリ、入力WHEREの変数と総実行を時間。だから、実行された各クエリを比較して、どのタイプの入力が長時間実行されているかを知ることができます。私はあなたが正しいクエリ実行プランと実行の詳細、探しているように聞こえる質問を読んで

は、

+0

をそれはセットアップにそれほど簡単ではありませんが、[pg_stat_statementsビュー](https://www.postgresql.org/docs/current/static/pgstatstatements.html)モジュールを見てください。 – Abelisto

+0

@Abelistoありがとう、私はそれを行うためにpg_stat_statementを使用しましたが、私のメンターはそのモジュールなしで言った。多分別の方法がありますか? ありがとうございました –

+0

[エラー報告とロギング](https://www.postgresql.org/docs/current/static/runtime-config-logging.html)を使用してみます。パラメータ 'log_statement'を見てください'log_duration'(完了した各SQL文の継続時間を記録する)、' log_min_duration_statement'(文を記録する最小実行時間を設定する)などがあります。 – Abelisto

答えて

1

ありがとう?

もしそうなら、あなたはEXPLAINのドキュメント[1]を見て、それらに慣れておきたいと思います。

explainオプションを指定しないと、クエリプランが提供されません。実際にはクエリは実行されません。

explain analyzeは、それがdetoast出力データをしていませんが、これは通常は問題ではありません(あなたが実際のタイミング対期待できます。それはあなたが持っているすべての時間があなたのオプションに分析するよう。

explain analyze verboseそれが実際にクエリを実行します時折あなたが役立つことが統計をバッファリングしたい指定

。あなたに追加の情報を提供しますが、それはまれなコーナーケースです。これらの3つ。

はまた、あなたが遅いクエリをログに記録するのPostgreSQLを設定することができますから始めて、これはパラメータが含まれますか入力。櫛これらの問題を解決するためには、通常、2つの処理が重要です。

[1] https://www.postgresql.org/docs/9.3/static/sql-explain.html

+0

ありがとう..私はEXPLAINについて読んだ。 EXPLAINを使って私は私の質問の計画を見ることができます。しかし、それは私の問題ではありません。 質問が不明な場合は申し訳ありません。私は上記のポストのような単純な選択をした後、どのようにpg_stat_statementを使用せずにクエリ、トランザクション時間などの各選択されたトランザクションの詳細を取得??ありがとうございます。 –

+0

PostgreSQLで実際に行う方法はありません。遅いクエリで問題が発生しているように私には聞こえます。最良の選択肢は、遅いクエリを特定のしきい値以上に記録してから、なぜそれらが遅いのかを調べるために説明を使用することです。私はあなたがクライアント側の時間を追跡し、クライアント側のログをとることができると思います。 –

+0

よく、あなたの説明のためにあまりにもありがとう。 :) –

関連する問題