Postgres查询执行时间

时间:2013-07-15 12:06:45

标签: postgresql

MySQL命令行界面中,当您执行查询时,它会告诉您在打印结果后执行查询所需的时间。

在Postgres命令行界面(psql)中,它没有告诉你。我知道如何配置日志记录以便我可以从日志中获取信息,但是将它打印到标准输出会比在MySQL中更方便。

可以这样做吗?

2 个答案:

答案 0 :(得分:57)

按照"How can I time SQL-queries using psql?"的说明使用\timing

另见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,可以在正在运行的系统上收集方便的聚合信息。

答案 1 :(得分:14)

我认为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"