参考博客:正确的理解MySQL的MVCC及实现原理
一、MVCC是什么?
多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
说人话:维持一个数据的多个版本,使得读写操作没有冲突。(理想概念)
凡是涉及到“写”的并发操作,就可能有线程安全问题要解决。(注意上边是读-写操作)
数据库的并发操作有三种:
- 读-读:不存在任何问题,也不需要并发控制;
- 读-写:有线程安全问题,可能会造成事务隔离性问题,例如脏读、幻读、不可重复读;
- 写-写:有线程安全问题,可能会存在更新丢失问题。
MVCC的好处:
1、提高数据库并发性能,可以在读操作时不用阻塞写操作,或者是写操作时不用阻塞读操作,做到不加锁,非阻塞并发读。
2、可以解决脏读、幻读、不可重复读等事务隔离问题,但不能解决更新丢失问题。
方案: