gpt4 book ai didi

sql - PostgreSQL 在第 6 次执行同一查询后锁定

转载 作者:行者123 更新时间:2023-11-29 14:03:11 24 4
gpt4 key购买 nike

PostgreSQL 版本:Postgres Plus Advanced Server 9.2
操作系统:Windows 7/8

我有一个存储过程,它的行为如下:
1. 清除table1
2. 根据 WHERE 子句中传递的几个参数从 View 中选择(总是相同的 View )(为了示例总是相同的参数)
3. 将上面选择的结果插入table1

程序的主体如下所示:

BEGIN

PERFORM clear_table1(p_session_id);

INSERT INTO table1 (session_id, id1, adress, x, y)
SELECT p_session_id, id1, adress, x, y
FROM myview
WHERE (CONDITION)
AND (CONDITION)
AND (CONDITION)
AND (lower(adress) LIKE lower(p_adress) OR p_adress IS NULL)
LIMIT 6000;
END;

前 5 次(总是 5 次)我使用完全相同的参数运行完全相同的查询,它按预期运行。下一次(第 6 次)它会运行很长一段时间,大约 .. 几十分钟。

select * from myfunction('session_id',NULL,NULL,'%adress%')

在 PostgreSQL 管理器的服务器状态 View 中,我观察到为我插入的表添加了许多锁以及从中填充 View 的表

任何有 PostgreSQL 经验的人都可以告诉我是否有某种设置可以修复此行为或者其他使用 PG 的人是否发生过这种情况或类似情况?

谢谢!!!

稍后编辑:- 当从同一 session 进行 6 次调用时,问题总是出现-我们没有明确 promise 存储过程结束

最佳答案

大胆猜测:您正在使用具有默认准备阈值的 JDBC。

查看禁用服务器端准备是否可以解决问题。参见 the PgJDBC docs .

否则,如果缓慢的调用在函数内:尝试启用 auto_explain 并启用函数体处理。然后在第 6 次调用时查看计划是否因某种原因而改变。

关于sql - PostgreSQL 在第 6 次执行同一查询后锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com