首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL如何实现REPEATABLE_READ隔离级别?

问PostgreSQL如何实现REPEATABLE_READ隔离级别?
EN

Stack Overflow用户
提问于 2021-10-10 13:54:58
回答 1查看 980关注 0票数 4

REPEATABLE_READ事务隔离级别PostgreSQL 12防止脏读、不可重复读取和幻影读取。与READ_COMMITTED隔离级别不同,REPEATABLE_READ隔离级别防止不可重传读取和幻影读取。

我想这是有代价的,否则两者只会相等。postgres如何保证这3种阅读现象不会发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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事务启动

后标记为死的行

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69515792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档