一、什么是MVCC
MVCC,全称 Multi-Version Concurrency Control ,MVCC是多版本并发控制的全称,是指多版本的并发控制。MVCC是一种并发控制方法。通常,在数据库管理系统中,它用编程语言实现对数据库和事务存储器的并发访问。
MVCC 是一种在读取数据时无需锁定(加锁)即可提高读取效率和并发性的方法。
数据库并发有以下情况:
1、读-读:没有问题。
2、读-写:存在线程安全问题,这可能导致脏读、幻读和不可重复读。
3、写-写:存在线程安全问题,更新可能会丢失。
二、MVCC的实现原理
这里面讲解了,事务的特性、事务的隔离级别,当时说MySQL事务实现原理有单版本控制——锁,以及多版本控制MVCC。
现在我们需要知道,在读已提交(RC,Read Committed)和可重复读(RR,Repeatable Read)隔离级别下的快照读,都是基于MVCC实现的!
MVCC最大的优点是没有读锁,读写之间没有冲突。在读多写少的OLTP(On-Line Transaction Processing,联机事务处理)应用程序中,读写之间没有冲突非常重要,这大大提高了系统的并发性。