文章目录
- 1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView
- 2、总结
1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView
而RR 是可重复读,在一个事务中,执行两次相同的select语句,查询到的结果是一样的。
那MySQL是如何做到可重复读的呢? 我们简单分析一下就知道了

我们看到,在RR隔离级别下,只是在事务中第一次快照读时生成ReadView,后续都是复用该ReadView,那么既然ReadView都一样, ReadView的版本链匹配规则也一样, 那么最终快照读返回的结果也是一样的。
2、总结
所以呢,MVCC的实现原理就是通过 InnoDB表的
隐藏字段、UndoLog 版本链、ReadView来实现的。
而MVCC + 锁,则实现了事务的隔离性。
而一致性则是由redolog与undolog保证。
原子性:undo log一致性:undo log + redo log隔离性:锁+MVCC持久性:redo log