实际上我在postgres
运行一个函数,需要1123 + ms才能执行该函数。
该函数包括调用其他函数并执行许多查询。我怎么知道哪个查询是缓慢执行函数的罪魁祸首。
我见过。 select * from pg_stat_activity;
给出当前运行过程的输出。
运行postgres函数时是否可以获得单独的查询时间?
我知道很多人会说通过插入在数据库中记录查询时间,但是在postgres中有任何方法,这样我就可以把时间花在每个查询上。
也有没有办法在postgres中更改配置文件,因为我不想重新启动postgres。如果没有,其他解决方案最受欢迎。
感谢。
答案 0 :(得分:0)
您可以通过pg_stat_statements
扩展程序执行此操作,但加载它确实需要重新启动服务器。
安装后,只需SET pg_stat_statements.track = all
(以超级用户身份),调用您的函数,然后SELECT * FROM pg_stat_statements
。
除非您拥有对服务器的独占访问权限,否则您可能希望在pg_stat_statements.track = none
中添加postgresql.conf
的默认值,以便仅跟踪您的会话。