Postgres查询执行时间

Nic*_*ckJ 32 postgresql

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

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

可以这样做吗?

Cra*_*ger 63

使用\timing由作为解释:"我的时间SQL查询如何使用PSQL?" .

另见手册psql.

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

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

PgBadger,特别是当与结合auto_explain模块,可以提供从日志分析有用的汇总统计.

最后,还pg_stat_statements可以收集正在运行的系统上的方便的聚合信息.

  • @aName:在 psql 控制台中输入 \timing 并按 Enter 键。:) 要禁用,请再次输入 \timing。 (3认同)
  • 以及如何使用 \timing (2认同)

小智 20

我认为这EXPLAIN ANALYSE可能对你有所帮助

句法:

EXPLAIN ANALYSE query;
Run Code Online (Sandbox Code Playgroud)

例;

EXPLAIN ANALYSE 
SELECT  * 
FROM    demotable;
Run Code Online (Sandbox Code Playgroud)

输出:

"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"
Run Code Online (Sandbox Code Playgroud)


and*_*har 8

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

psql -d db -c '\timing' -c 'select 1'
Run Code Online (Sandbox Code Playgroud)

摘自评论。