在屏幕套接字中显示 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(可能与单独的prepareexplain analyze execute)、explain (analyze true, timing false) 来获取服务器运行时,而无需详细的每个节点的计时开销、log_min_duration_statement 服务器设置、@987654329 @的\timing选项,操作系统time命令等

【讨论】:

谢谢。现在就足够了;)但是当描述时间命令选项时,我可以要求您提供一些文档链接吗?也许我可以在哪里检查如何获得您所写的不同时间? @Borys 没有一份文档描述了不同的计时方法。有些使用操作系统设施,有些设施在psql,有些使用服务器功能。 也许至少可以选择 psql 时间?在 postgresql.org 上没有找到它。 @Borys 你的意思是\timing 命令吗?请参阅 psql 中的 \?psql 手册。

以上是关于在屏幕套接字中显示 plpgsql 过程的执行时间的主要内容,如果未能解决你的问题,请参考以下文章

在函数 plpgsql (POSTGIS) 中执行查询

在 postgresql 中使用 plpgsql 有啥好处

返回查询时如何退出plpgsql函数

sql plpgsql存储过程中的动态查询示例

无法执行 plpgsql/postgres 中的函数

PL/pgSQL 代码的问题