57

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

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

这可以做到吗?

4

3 回答 3

99

\timing按照“如何使用 psql 为 SQL 查询计时?”中的说明使用。.

另请参阅手册psql

如果您希望服务器端执行时间不包括将结果传输到客户端的时间,您可以log_min_duration_statement = 0在配置中设置,然后SET client_min_messages = log在控制台中获取日志信息。

您还可以使用EXPLAIN ANALYZE获取详细的执行时间。除非您使用EXPLAIN (ANALYZE TRUE, TIMING FALSE),否则会有一些计时开销,它仅在较新版本中,并且禁用详细计时以仅提供聚合执行时间。

PgBadger,尤其是与模块结合使用时auto_explain可以从日志分析中提供有用的聚合统计信息。

最后,还有pg_stat_statements,它可以收集有关正在运行的系统的方便聚合信息。

于 2013-07-15T13:45:32.797 回答
42

我认为这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"
于 2016-12-01T04:35:54.927 回答
2

您可以按如下方式使用\timingin将执行时间打印到标准输出:pgsql

psql -d db -c '\timing' -c 'select 1'

取自评论。

于 2021-08-27T13:13:58.290 回答