我知道 PostgreSQL 为并发控制提供了多种锁定模式。当我阅读他们的文件时,我看不出为什么ACCESS EXCLUSIVE
无论如何都需要锁。EXCLUSIVE
锁和锁之间的唯一区别ACCESS EXCLUSIVE
似乎是ACCESS EXCLUSIVE
锁不允许从表中读取。
但是,人们能够阅读不是一件好事吗?在什么情况下你应该阻止用户阅读?在我看到的文档中,通常DROP TABLE
等会使用ACCESS EXCLUSIVE
锁,但为什么呢?我在想,也许当你删除一个表时,当你试图读取时,数据已经部分消失了,所以结果会被破坏。但后来我意识到,由于 Postgres 中的所有内容都是事务性的,因此 aDROP TABLE
不应该在提交之前生效。所以我的猜测应该是错误的。
我仍然很困惑。当您将其与锁定进行比较时,为什么ACCESS EXCLUSIVE
再次需要EXCLUSIVE
锁定?我最好的猜测是,用ACCESS EXCLUSIVE
锁替换锁EXCLUSIVE
不会破坏 PostgreSQL。只是有时人们不想让别人阅读。我错过了什么?