在MySQL
命令行界面中,当您执行查询时,它将告诉您在打印结果后执行查询所需的时间。
在Postgres命令行界面(psql
)它没有告诉你。我知道如何配置日志记录,以便我可以从日志中获取信息,但将它打印到标准输出会更方便,就像在MySQL
中一样。
可以这样做吗?
使用\timing
解释的"How can I time SQL-queries using 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
,可以在正在运行的系统上收集方便的聚合信息。
我认为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"