首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Postgres中锁定表以允许其他事务读取,但不允许写入

问在Postgres中锁定表以允许其他事务读取,但不允许写入
EN

Stack Overflow用户
提问于 2017-05-29 11:07:48
回答 1查看 2.5K关注 0票数 5

我正在开发Django应用程序。有一种功能,我想通过读取、计算和插入到许多表来更改数据库状态。这是一个原子过程,它不能仅仅是“单线程”,因为产生的状态取决于执行这些过程的顺序。

为此,我和一个工人一起用芹菜。我考虑了Postgres中的序列化隔离级别,直到我读到:

可序列化的事务保证与在中一次运行一个事务产生相同的效果--某种顺序。

但是我不需要一些,我需要确切的顺序,这就是我选择消息队列的原因。

在这个过程中,我想不允许写到我完全操作的表格,但仍然允许阅读。哪种限制最小的锁模式适合我的情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-29 11:39:24

如果我理解你的问题,你想:

代码语言:javascript
复制
lock table_name in exclusive mode;

https://www.postgresql.org/docs/current/static/sql-lock.html https://www.postgresql.org/docs/current/static/explicit-locking.html

排他性 与行共享、行独占、共享更新独占、共享、共享行独占、独占和访问独占锁定模式发生冲突。这种模式只允许并发访问共享锁,即只有从表中读取的数据才能与持有此锁模式的事务并行进行。

其他会话将在启动事务和锁定表之前状态读取表。尝试写入表将使会话处于等待事务完成的状态。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44241032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档