mysql中innodb引擎的mvcc机制和BufferPool缓存机制
2024-10-19 09:30:27
一、MVCC
(1)mvcc主要undo日志版本链和read-view一致性视图来保证多事务的并发控制,mvcc是innodb的一种特殊机制,他保证了事务四大特性之一的隔离性(原子性,一致性,隔离性)。
(2)不同事务的隔离级别mvcc的作用机制不一样,当隔离级别是读已提交的时候,他会第一次执行select语句的时候会生成一个read-view,基于undo日志版本链的一致性试图,之后整个事务每当有select执行的时候就会去更新read-view,当事务的隔离级别是可重复读的时候,mvcc机制只会在第一次执行select语句的时候去生成read-view的一致性试图。
基于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缓存机制
最新文章
- 个人对B/S项目的一些理解(三)--Servlet与Strust
- 编译原理词法分析 java简单实现
- getchar的利用
- 学习Data Science/Deep Learning的一些材料
- Unity3D在IOS上的优化小结
- hdu Hike on a Graph
- js !!条件判断或运算的作用
- 信号处理基础概念比较----频谱vs功率谱vs能谱
- 项目中用到的window.showModalDialog(来自网络)
- 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好
- 如何安装mysql-5.5.29-win32.zip
- PHP中zlib扩展实现GZIP压缩输出各种方法总结
- 【HTML5】DOMContentLoaded事件
- ctp交易平台转java接口转换
- ArcGIS JS API多线程克里金插值
- day 23-1 类的命名空间、组合
- markdown反射型xss漏洞复现
- Let’s Encrypt 通配符证书申请配置
- ios不触发事件也能播放音频
- 网络通信socket连接数上限