暂无图片
在postgresql12中,SQL单独执行不慢,但在存储过程中执行慢。
我来答
分享
暂无图片 匿名用户
在postgresql12中,SQL单独执行不慢,但在存储过程中执行慢。

遇到过几个这样的案例,SQL单独执行不慢,但在存储过程中执行慢,没查到LOCK,查EVENT也没什么可疑的。存储过程的特点是有10多个甚至更多的表的处理更新,中间没有COMMIT。找不到其他原因,我推测是因为事务太大的原因。

这可能是什么原因,还有什么方法排查呢?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
梧桐

1.启用慢查询日志,修改 postgresql.conf 文件,

log_min_duration_statement = 5000  # 记录执行时间超过 5 秒的查询

2.分析执行计划

EXPLAIN ANALYZE SELECT * FROM your_table WHERE your_condition;

3,查询 pg_stat_activity 视图,查看存储过程执行时是否有锁等待或其他异常:

SELECT * FROM pg_stat_activity WHERE state = 'active';

4.启用 pg_stat_statements 扩展,分析存储过程中 SQL 语句的执行时间和调用次数:

CREATE EXTENSION pg_stat_statements;
SELECT query, total_time, calls FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏