gpt4 book ai didi

django - Postgresql锁死锁

转载 作者:行者123 更新时间:2023-11-29 11:51:06 25 4
gpt4 key购买 nike

我正在使用 Django + Postgresql 开发一个系统。这是我第一次使用 postgresql,但我选择它是因为我需要事务和外键功能。

在某个 View 中,我必须使用 AccessExclusiveLock 锁定我的表,以防止在此 View 期间进行任何读取或写入。那是因为我在保存/更新我的实体之前对整个数据进行了一些检查。

我注意到不时发生不一致的错误。这是因为 select 语句直接发生在 lock 语句之后。它要求有 AccessShareLock。我在 postgresql 上阅读 website AccessShareLock 与 AccessExclusiveLock 冲突。

我不明白的是为什么它首先会发生。如果 postgresql 已经有一个覆盖隐式锁的显式锁,为什么它会要求隐式锁?我不明白的第二件事是为什么这个 View 在 2 个不同的 postregsql 进程上运行?它们不应该在单笔交易中收集吗?

提前致谢。

最佳答案

在 PostgreSQL 中,我建议在您的 session 上设置适当的事务隔离级别,而不是获取独占访问锁。因此,在运行“更新”之前,请将以下命令发送到您的数据库:

begin;
set transaction isolation level repeatable read;
-- your SQL commands here
commit;

根据您的描述,您需要可重复读隔离级别。

关于django - Postgresql锁死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3970101/

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