很抱歉这个菜鸟问题,但是什么是正确的表级锁定模式以允许从表中读取但不写入?
我的情况是我想防止在第三个表接收更新时写入两个表。一旦更新完成,其他两个表就可以解锁并接收其他更新。
如果无法阻止这些表被写入同时仍然允许它们被读取,那么我也可以完全锁定它们,以便在锁定期间无法写入或读取它们。
这是文档页面,我只是不明白它在说什么:https ://www.postgresql.org/docs/current/explicit-locking.html
很抱歉这个菜鸟问题,但是什么是正确的表级锁定模式以允许从表中读取但不写入?
我的情况是我想防止在第三个表接收更新时写入两个表。一旦更新完成,其他两个表就可以解锁并接收其他更新。
如果无法阻止这些表被写入同时仍然允许它们被读取,那么我也可以完全锁定它们,以便在锁定期间无法写入或读取它们。
这是文档页面,我只是不明白它在说什么:https ://www.postgresql.org/docs/current/explicit-locking.html
不要那样做。显式锁定表几乎总是错误的做法。如果您更详细地描述用例,我相信可以找到更好的解决方案。
频繁地锁定表将使 autovacuum 无法在表上执行其重要工作,最终会出现一个反环绕 autovacuum作业并阻止您,从而使处理停止。
我同意当您还不知道他们在说什么时,这些文档并不是最容易理解的。但是一旦你知道答案是
lock table foobar in exclusive mode
,我想事后看来就很清楚了。尽管可能有更好的方法来做你想做的任何事情,比如提高你的隔离级别。尽管这可能是最容易理解的,并且具有一定的价值。