2013-07-15 15 views
15

MySQLコマンドラインインターフェイスでは、クエリを実行すると、結果を出力した後にクエリが実行された時間が表示されます。Postgresクエリの実行時間

Postgresのコマンドラインインターフェイス(psql)では、あなたには言いません。私はログから情報を得るためにログを設定する方法を知っていますが、MySQLのように標準出力に印刷する方が便利です。

これはできますか?

+1

多くのGoogleのヒットは「グーグルを使う」と言って回答をしているとき、それは無意味だ - チョコレートティーポットと同じくらい便利! – NickJ

+0

\ timing - 話すのは楽しいです – NickJ

+1

これはカップルの方法です。しかし、それを試してもうまくいかない場合、あなたの質問にそれを記述してください。 –

答えて

42

"How can I time SQL-queries using psql?"で説明されているように\timingを使用してください。

the manual for psqlも参照してください。あなたは結果をクライアントに転送する時間を含まないサーバー側実行時間が必要な場合

、あなたはSET client_min_messages = logはそうあなたがコンソールでログ情報を取得、その後、設定でlog_min_duration_statement = 0を設定することができます。

EXPLAIN ANALYZEを使用して詳細な実行タイミングを取得することもできます。新しいバージョンでのみ使用するEXPLAIN (ANALYZE TRUE, TIMING FALSE)を使用し、集約実行時間のみを与える詳細なタイミングを無効にしない限り、このためのタイミングオーバーヘッドがあります。

PgBadgerは、特にthe auto_explain moduleと組み合わせると、ログ分析から有用な集計統計を提供することができる。

最後に、実行中のシステムで便利な集約情報を収集できるpg_stat_statementsがあります。

+1

と\ timingの使用方法 – aName

+0

[手動](https://www.postgresql.org/docs/current/static/app-psql.html)または[google](https://www.google .com.au/search?q = psql + timing)。ああ、私はあなたに気付きました[ちょうどそれについての質問を投稿しました](http://stackoverflow.com/q/40593723/398670)。多分あなたはそれにリンクしているはずだったので、私はここであなたに答える時間を無駄にしませんでした。 –

5

私はEXPLAIN ANALYSE構文

あなたに役立つかもしれないと思う:

EXPLAIN ANALYSE query; 

例。

EXPLAIN ANALYSE 
SELECT * 
FROM demotable; 

出力:

"Seq Scan on demotable (cost=0.00..12.10 rows=210 width=356) 
         (actual time=0.020..0.021 rows=8 loops=1)" 
"Planning time: 18.477 ms" 
"Execution time: 0.042 ms" 
関連する問題