在MySQL
命令行界面中,當您執行查詢時,它會告訴您在打印結果後執行查詢需要多長時間。Postgres查詢執行時間
在Postgres命令行界面(psql
)中,它不會告訴您。我知道如何配置日誌記錄,以便我可以從日誌中獲取信息,但將它打印到標準輸出會更方便,就像它在MySQL
中那樣。
可以這樣做嗎?
在MySQL
命令行界面中,當您執行查詢時,它會告訴您在打印結果後執行查詢需要多長時間。Postgres查詢執行時間
在Postgres命令行界面(psql
)中,它不會告訴您。我知道如何配置日誌記錄,以便我可以從日誌中獲取信息,但將它打印到標準輸出會更方便,就像它在MySQL
中那樣。
可以這樣做嗎?
使用\timing
,如"How can I time SQL-queries using psql?"所解釋的。請參閱the manual for psql
。
如果你想服務器端執行時間不包括將結果傳送到客戶端的時候,你可以在配置中設置log_min_duration_statement = 0
,然後SET client_min_messages = log
等你拿在控制檯中的日誌信息。
您還可以使用EXPLAIN ANALYZE
來獲取詳細的執行時間。除非您使用EXPLAIN (ANALYZE TRUE, TIMING FALSE)
(僅適用於較新的版本),並且禁用詳細的計時,以便僅給出總計執行時間,否則會有一些計時開銷。
PgBadger,特別是當與the auto_explain
module結合使用時,可以從日誌分析中提供有用的彙總統計信息。
最後,有pg_stat_statements
,它可以收集正在運行的系統上的便捷聚合信息。
以及如何使用\ timing – aName
使用[手動](https://www.postgresql.org/docs/current/static/app-psql.html)或[google](https://www.google .com.au /搜索q = PSQL +定時)。哦,我注意到你[只是發佈了一個關於它的問題](http://stackoverflow.com/q/40593723/398670)。也許你應該聯繫到它,所以我沒有浪費時間在這裏回答你。 –
我認爲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"
這是毫無意義的時候,許多谷歌的點擊率是回答說:「使用谷歌」 - 大約爲巧克力茶壺一樣有用! – NickJ
\時間 - 這很有趣談話 – NickJ
這是一對夫婦的一種方式。但是,如果你嘗試了它並且不起作用,請在你的問題中描述它。 –