postgresql Postgres查询执行时间

e7arh2l6  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(1221)

MySQL命令行界面中,当您执行查询时,它会告诉您在打印出结果后执行查询所用的时间。
在Postgres命令行界面(psql)中,它没有告诉你。我知道如何配置日志记录,这样我就可以从日志中获取信息,但让它像在MySQL中那样打印到标准输出会更方便。
这能做到吗?

1tu0hz3e

1tu0hz3e1#

按照"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,它可以收集运行系统上方便的聚合信息。

svmlkihl

svmlkihl2#

我想EXPLAIN ANALYZE可能对你有帮助
语法:

EXPLAIN ANALYZE query;

例;

EXPLAIN ANALYZE 
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"
ercv8c1e

ercv8c1e3#

您可以在pgsql中使用\timing,如下所示,将执行时间打印到标准输出:

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

取自此注解。

相关问题