文章目录
- 1.MVCC多版本并发控制基本概念
- 2.MVCC实现原理
- 2.1 innodb引擎的表结构中的三个隐藏字段
- 2.2 innodb引擎的undo log日志
- 2.3 innodb引擎的readview
- 2.4 MVCC实现原理小结
1.MVCC多版本并发控制基本概念
快照读、当前读、MVCC的介绍。

快照读,select不加锁,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。
快照读演示:

当前读就是读取到最新的版本记录,读取时还要保证其他事务不能修改当前记录,会对读取的记录进行加锁。
当前读演示:

2.MVCC实现原理
2.1 innodb引擎的表结构中的三个隐藏字段
在innodb引擎的表结构当中存在三个或两个隐藏字段,有没有DB_ROW_ID取决于表有没有指定主键。

如何查看隐藏字段?可直接从表结构中查看。
cd /var/lib/mysql
cd itcast/
下面的ibd文件都是独立表空间文件

ibd2sdi stu.ibd


2.2 innodb引擎的undo log日志

undo log 版本链
每次修改操作完成后,会在undo log日志中留下一条记录。当有一连串的事务进行操作时,在undo log日志当中就会生成一条记录版本的版本链。

当我们查询的时候,具体要返回哪一个版本呢??
2.3 innodb引擎的readview

版本数据链访问规则:

RC读已提交的隔离情况下,在进行快照读的时候,MVCC在数据读取的时候具体的底层原理:

RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。(可重复读)

2.4 MVCC实现原理小结


![python——案例8:设定列表:listl=[0,1,2,3,4,5],求列表之和](https://img-blog.csdnimg.cn/e25ef78fe8274056a78e34cbc20d4cf8.png)

















