在postgresql中REPEATABLE-READ是否过于严格?

时间:2014-12-30 10:03:36

标签: postgresql transactions transaction-isolation

具体而言,为什么他们的手册要求following

  

可重复读取事务无法修改或锁定更改的行   可重复读取事务开始后的其他事务。

该声明是否真的有必要保证不存在“不可重复的读取”?这对我来说并不明显,有人可以澄清吗?

1 个答案:

答案 0 :(得分:1)

该声明适用于REPEATABLE READ,而非READ COMMITTED

READ COMMITTED 强制执行您引用的要求。只有REPEATABLE READSERIALIZABLE可以。

REPEATABLE READ事务在开始后无法修改或锁定其他事务更改的行的原因是因为修改的行可能不再与事务用于选择它的谓词匹配,并且因为新值(如果REPEATABLE READ事务然后根据它可以看到的旧版本修改行,则REPEATABLE READ事务不允许查看)可能会丢失。