mvcc多版本并发控制机制

一种并发控制机制,在数据库中用来控制并发执行的事务,控制事务隔离进行
mysql在可重复读隔离级别下保证较高的隔离性,底层主要靠MVCC(Multi-Version Concurrency Control)机制来保证的。
mysql在读已提交和可重复读隔离级别下都实现了mvcc机制,但是他们存在不同

undo日志版本链与read view机制详解

undo日志就是回滚日志,修改一条数据,会先保存副本,然后再对数据进行修改,如果修改失败,则根据undo回滚日志进行回滚。
一张表有原有的字段,mysql底层会加两个隐藏字段trx_id(事务ID)和roll_pointer(回滚指针)。

image.png

可重复读隔离级别,当事务开启,执行任何查询sql是会生成当前事务的一致性视图read-view,该视图在事务结束前都不会变化(如果是读已提交隔离级别在每次执行查询sql时都会重新生成)。
不同的查询不同的事务,在执行第一条查询语句的时候,不管执行什么查询语句,一个事务,会声场针对事务的一个readview(快照事务集一样)
readview补充:https://blog.csdn.net/n88Lpo/article/details/78126270

  • RR级别下,事务中的第一个SELECT请求才开始创建read view;
  • RC级别下,事务中每次SELECT请求都会重新创建read view;

事务ID生成:第一条执行修改的语句生成,select语句不会生成事务ID的。

buffer poll

image.png