概述:

  • Multi-Version Concurrency Control
  • 为了解决并发事务的各种问题
  • mysql避免通过加锁来保证并发的稳定,所以一个事务执行过程中,其他事务也可以访问这条数据,但是必须根据隔离级别决定显示哪个版本的值。MVCC就是做这个的。
  • 基于undo log日志,每次生成一致性视图(read-view)来实现的。

大致原理(待完善):

https://time.geekbang.org/column/article/70562

  • 读已提交:
    • 每次执行查询时都会重新生成一致性视图read-view(相当于记录了快照)
  • 可重复读:
    • 事务开启时,执行任何查询sql时会生成当前事务的一致性视图(read-view),该视图在事务结束之前都不会变化