一、MVCC概念
MVCC全称 Multi-Version Concurrency Control(多版本并发控制),指维护一个数据的多个版本,是一种乐观锁。作用是:在使用多线程并发读取数据时,使用乐观锁替代悲观锁从而提高读的性能。
MVCC的具体实现,需要依赖于数据库记录中的三个隐式字段、undo log日志、readView(读快照)。
1.1 隐藏字段
当我们创建一张表时,InnoDB还会自动的给我们添加三个隐藏字段:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8105aed9720c4e34992088e2d1f7f40e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zeu562U5b-r,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
1.2 undolog 版本链
在DML操作时,mysql会先将数据加载到内存,同时加载到undolog中,每更新一次会形成一个版本,多次更新则会形成多版本链