REPEATABLE_READ事务隔离级别PostgreSQL 12防止脏读、不可重复读取和幻影读取。与READ_COMMITTED隔离级别不同,REPEATABLE_READ隔离级别防止不可重传读取和幻影读取。
我想这是有代价的,否则两者只会相等。postgres如何保证这3种阅读现象不会发生?
发布于 2021-10-11 05:51:06
READ COMMITTED和REPEATABLE READ正在使用相同的技术:一种快照,它确定事务可以看到表中一行的哪个版本。不同的是,对于READ COMMITTED,快照是在每个语句的开头拍摄的,这样每个新语句都可以看到以前提交的所有内容,而REPEATABLE READ事务对所有语句都使用相同的快照。
有两个后果:
如果说是
REPEATABLE READ比READ COMMITTED便宜,因为它只需要更少的快照()
REPEATABLE READ提供了比SQL标准所要求的更高的隔离性--数据库在所有上似乎都没有变化。
你为REPEATABLE READ付出的代价是不同的:
。
VACUUM无法清除REPEATABLE READ事务启动后标记为死的行
https://stackoverflow.com/questions/69515792
复制相似问题