运行postgres函数时,如何知道哪个查询需要很长时间?

时间:2018-01-03 06:28:13

标签: postgresql

实际上我在postgres运行一个函数,需要1123 + ms才能执行该函数。

该函数包括调用其他函数并执行许多查询。我怎么知道哪个查询是缓慢执行函数的罪魁祸首。

我见过。 select * from pg_stat_activity;给出当前运行过程的输出。

运行postgres函数时是否可以获得单独的查询时间?

我知道很多人会说通过插入在数据库中记录查询时间,但是在postgres中有任何方法,这样我就可以把时间花在每个查询上。

也有没有办法在postgres中更改配置文件,因为我不想重新启动postgres。如果没有,其他解决方案最受欢迎。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过pg_stat_statements扩展程序执行此操作,但加载它确实需要重新启动服务器。

安装后,只需SET pg_stat_statements.track = all(以超级用户身份),调用您的函数,然后SELECT * FROM pg_stat_statements

除非您拥有对服务器的独占访问权限,否则您可能希望在pg_stat_statements.track = none中添加postgresql.conf的默认值,以便仅跟踪您的会话。

相关问题