MVCC多版本并发控制
1、MVCC的作用
mvcc能让数据库在高并发下做到安全高效的读写,提升数据库的并发性能;是一种用来解决并发下读写冲突的无锁解决方案。
在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能。
2、MVCC前置了解的东西
隐式字段
数据库一条记录中除了建表时添加的字段,还有隐式字段,在高性能Mysql中有关于MVCC的讲解是两个隐式字段,在许多博客中也有三个字段。(那种正确我也不清楚,hh)
db_rollback: 回滚指针,我们可以想成链表(当然这个名字并不准确 是我自己便于理解写为 db_rollback)指向undolog日志中上一条修改的记录
db_tx_id: 事务id,系统分配 自增。
read view
阅读视图:包含了当前活跃的事务id(我们可以理解为还没有提交或者回滚的事务)以及下一条要分配事务的id 那么阅读视图中就有两个极值