多版本并发控制(Multi-Version Concurrency Control)是MySQL的InnoDB引擎实现隔离级别的一种具体方式。
它可以实现提交读和可重复读两种级别的隔离。
未提交读太简单,不需要用MVCC,可串行化太难,只用MVCC解决不了。
MVCC的基本思想:
在读写锁中,读和读不是互斥的,但是读和写之间是互斥的。而MVCC利用多版本的思想,写操作更新最新的版本快照,读操作读取旧版本的快照,读写之间没有互斥关系。
在MVCC中的事务修改操作(INSERT DELETE UPDATE 增 删 改)会为数据行新增一个版本快照。
为了解决脏读和不可重复读的问题,MVCC规定只能读取已提交的快照。