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

二、当前读、快照读
当前读: 读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录加锁。(是悲观锁的实现,实际上可以类比成一个串行的操作,因此容易造成阻塞)
当前读的操作有:select lock in shar

本文详细介绍了MySQL中的多版本并发控制(MVCC)原理,包括MVCC如何提高并发性能并解决事务隔离问题。此外,还讲解了当前读与快照读的区别,以及RC(读已提交)和RR(可重复读)隔离级别的不同。同时,文章讨论了MVCC在MySQL中通过隐式字段、undo日志和Read View实现的具体细节,并提及了MySQL的日志系统,如redo log、undo log、binlog等的作用和应用场景。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



