MySQL为什么select在update之后就不是快照读了?

作者站长头像
站长
· 阅读数 6

在了解MySQL中事务隔离级别的时候,学到这个例子:

MySQL为什么select在update之后就不是快照读了?

为什么事务A第二次select就能查到了,按照mvvc机制来说,不应该还是查不到吗?即使id=5的这一条数据是事务id是A,但是它还是介于m_up_limit_id(事务A的id)和m_low_limit_id(事务B的id加1)之间,所以还是查不到啊,为什么说第二次select就可以查到id=5的这条记录了?

回复
1个回答
avatar
test
2024-07-07

answer image

原文链接

破案了,原来匹配规则还有一条,我看了很多讲mvvc的博客,都漏掉了第一条。我题目中说的情况满足第一条匹配规则,所以能读取到。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容