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