概述:
- Multi-Version Concurrency Control
- 为了解决并发事务的各种问题
- mysql避免通过加锁来保证并发的稳定,所以一个事务执行过程中,其他事务也可以访问这条数据,但是必须根据隔离级别决定显示哪个版本的值。MVCC就是做这个的。
- 基于undo log日志,每次生成一致性视图(read-view)来实现的。
大致原理(待完善):
https://time.geekbang.org/column/article/70562
- 读已提交:
- 每次执行查询时都会重新生成一致性视图read-view(相当于记录了快照)
- 可重复读:
- 事务开启时,执行任何查询sql时会生成当前事务的一致性视图(read-view),该视图在事务结束之前都不会变化
