在屏幕套接字中显示 plpgsql 过程的执行时间
Posted
技术标签:
【中文标题】在屏幕套接字中显示 plpgsql 过程的执行时间【英文标题】:Show execution time of plpgsql procedure in screen socket 【发布时间】:2013-06-25 12:19:31 【问题描述】:我需要显示在屏幕套接字内执行的 psql 命令的执行时间。 通常我使用命令:
psql -c 'select 1' -d my_db -U my_user -h localhost
这个查询的输出看起来像:
?column? - 1 row
如何获得执行时间? 我正在尝试使用 \timing,但没有任何结果...
【问题讨论】:
time command
显示它。
【参考方案1】:
定义“执行时间”。这里有很多不同的。
包括或不包括psql
二进制文件的启动时间?
包括还是不包括建立连接所花费的时间?
包括或不包括发送查询和接收结果的网络往返和上下文切换时间?
包括还是不包括在服务器上规划查询所花费的时间?
包括或不包括在服务器上花费的时间执行查询一旦被计划?
包括或不包括格式化结果显示的时间?
最简单的方法是使用time
命令,就像 fedorqui 所说的那样。 time psql ...
.
要说如何计时,你需要先定义你真正想要的时间。
然后您可以考虑使用explain analyze
(可能与单独的prepare
和explain analyze execute
)、explain (analyze true, timing false)
来获取服务器运行时,而无需详细的每个节点的计时开销、log_min_duration_statement
服务器设置、@987654329 @的\timing
选项,操作系统time
命令等
【讨论】:
谢谢。现在就足够了;)但是当描述时间命令选项时,我可以要求您提供一些文档链接吗?也许我可以在哪里检查如何获得您所写的不同时间? @Borys 没有一份文档描述了不同的计时方法。有些使用操作系统设施,有些设施在psql
,有些使用服务器功能。
也许至少可以选择 psql 时间?在 postgresql.org 上没有找到它。
@Borys 你的意思是\timing
命令吗?请参阅 psql
中的 \?
或 psql
手册。以上是关于在屏幕套接字中显示 plpgsql 过程的执行时间的主要内容,如果未能解决你的问题,请参考以下文章