mysql视频缓存技术_mysql中innodb引擎的mvcc机制和BufferPool缓存机制

一、MVCC

(1)mvcc主要undo日志版本链和read-view一致性视图来保证多事务的并发控制,mvcc是innodb的一种特殊机制,他保证了事务四大特性之一的隔离性(原子性,一致性,隔离性)。

(2)不同事务的隔离级别mvcc的作用机制不一样,当隔离级别是读已提交的时候,他会第一次执行select语句的时候会生成一个read-view,基于undo日志版本链的一致性试图,之后整个事务每当有select执行的时候就会去更新read-view,当事务的隔离级别是可重复读的时候,mvcc机制只会在第一次执行select语句的时候去生成read-view的一致性试图。

f95140a3e3df00d33c50d069150b28b3.png

基于undo日志版本链的比对规则:

(1)第一次执行select的时候,innodb引擎会根据目前在执行的事务生成有效的事务id的数组,和一个最大事务的id。形成最小事务minId 和 maxId。

(2)当一个事务执行select语句的时候,会去基于一下原则比对拿到基于当前事务隔离级别的数,从版本链的最上面开始比对:

a、读取的当前版本链事务ID>read-view的maxId,不可见的

b、读取当前版本链事务ID>read-view的minId并且小于maxId,如果当前版本链的事务ID在read-view中,那么说明生成read-view的时候当前版本链的事务正在执行,所以是不可见的。如果当前版本链的事务ID不在read-view中,说明该事务已提交,数据是可见的。

c、读取的当前版本链的事务ID小于minId的话,说明生成read-view的时候,该事务已经提交了,数据是可见的。

注意:mvcc在控制事务隔离级别是读已提交还是可重复读的时候,区别在于mvcc机制在读已提交的事务级别时候是每次执行select查询的时候会重新生成read-view,而可重复读是在事务第一次执行select语句的时候生成一次read-view,贯穿整个事务的执行。

二、Innodb中的BufferPool缓存机制

f345658e5451790e73d54f4e08803648.png

注意:

(1)页数据读到缓存

(2)在缓存执行数据更新

(3)更新完缓存写undo-log文件,用于事务的数据回滚,事务隔离级别的实现

(4)innodb写redo-log缓存 写入磁盘

(5)执行器写入binlog文件并写入redo-log文件commit标记,标志事务提交完成,bin-log和redo-log数据同步

(6)按照mysql的策略io线程将BufferPool的数据写入磁盘(顺序IO的速度远远大于随机IO)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值