我正在开发Django应用程序。有一种功能,我想通过读取、计算和插入到许多表来更改数据库状态。这是一个原子过程,它不能仅仅是“单线程”,因为产生的状态取决于执行这些过程的顺序。
为此,我和一个工人一起用芹菜。我考虑了Postgres中的序列化隔离级别,直到我读到:
可序列化的事务保证与在中一次运行一个事务产生相同的效果--某种顺序。
但是我不需要一些,我需要确切的顺序,这就是我选择消息队列的原因。
在这个过程中,我想不允许写到我完全操作的表格,但仍然允许阅读。哪种限制最小的锁模式适合我的情况?
发布于 2017-05-29 11:39:24
如果我理解你的问题,你想:
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
排他性 与行共享、行独占、共享更新独占、共享、共享行独占、独占和访问独占锁定模式发生冲突。这种模式只允许并发访问共享锁,即只有从表中读取的数据才能与持有此锁模式的事务并行进行。
其他会话将在启动事务和锁定表之前状态读取表。尝试写入表将使会话处于等待事务完成的状态。
https://stackoverflow.com/questions/44241032
复制相似问题