当前位置:网站首页>MySQL:已提交读和可重复读的实现原理 | MVCC(多版本并发控制)——笔记自用
MySQL:已提交读和可重复读的实现原理 | MVCC(多版本并发控制)——笔记自用
2022-08-09 04:13:00 【_索伦】
MVCC
MVCC是多版本并发控制(Multi-Version Concurrency Control,简称MVCC),是MySQL中基于乐观锁理论实现隔离级别的方式,用于实现已提交读和可重复读隔离级别的实现,也经常称为多版本数据库。MVCC机制会生成一个数据请求时间点的一致性数据快照 (Snapshot), 并用这个快照来提供一定级别 (语句级或事务级) 的一致性读取。从用户的角度来看,好象是数据库可以提供同一数据的多个版本(系统版本号和事务版本号)。
MVCC多版本并发控制中,读操作可以分为两类:
1、快照读(snapshot read)
读的是记录的可见版本,不用加锁。如select
2、当前读(current read)
读取的是记录的最新版本,并且当前读返回的记录。如insert,delete,update,select…lock in sharemode/for update
MVCC:每一行记录实际上有多个版本,每个版本的记录除了数据本身之外,增加了其它字段
DB_TRX_ID:记录当前事务ID
DB_ROLL_PTR:指向undo log日志上数据的指针
已提交读:每次执行语句的时候都重新生成一次快照(Read View),每次select查询时。
可重复读:同一个事务开始的时候生成一个当前事务全局性的快照(Read View),第一次select查询时。
快照内容读取原则:
1、版本未提交无法读取生成快照
2、版本已提交,但是在快照创建后提交的,无法读取
3、版本已提交,但是在快照创建前提交的,可以读取
4、当前事务内自己的更新,可以读到
undo log
undo log:回滚日志,保存了事务发生之前的数据的一个版本,用于事务执行时的回滚操作,同时也是实现多版本并发控制(MVCC)下读操作的关键技术。
DB_TRX_ID:事务ID
DB_ROLL_PTR:回滚指针
图示:在该图中,第一个事务id是1000,它利用(DB_ROLL_PTR)保存了上一个事务操作的地址
边栏推荐
- 器件可靠性与温度的关系
- MySql.Data.MySqlClient.DBNull
- 理性预测,未来音视频开发前景将是这般光景
- NanoDet代码逐行精读与修改(零)Architecture
- “error“: { “root_cause“: [{ “type“: “circuit_breaking_exception“, “reason“: “[parent] D【已解决】
- One Pass 1258 - Digital Pyramid (Dynamic Programming)
- leetcode 5724. 绝对差值和
- 电脑重装系统如何在 Win11查看显卡型号信息
- 自动化测试的生命周期是什么?
- NanoDet代码逐行精读与修改(一)Backbone
猜你喜欢
随机推荐
服务端修改Cookie——跨域cookie发送机——通信加密——异或加密
3年半测试经验,20K我都没有,看来是时候跳槽了...
leetcode 5709. 最大升序子数组和
已解决ModuleNotFoundError: No module named ‘Workbook‘
31 基本统计概念
leetcode 5724. 绝对差值和
了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器
07.1 Supplements to the class
查询某时间段获得的积分总积分的大小进行排序
配置网络接口的“IP“命令
[math] dot product and cross product
[Graphics] 19 Lighting model (four, Blinn-Phong lighting model)
How to resolve the conflict between LAN segment and WAN segment when Honor router (WS831) is used as wireless relay
2分钟,带你走完企业经营分析全流程,更有通用分析框架直接套用
(a) 7 classes and objects
【每日一题】761. 特殊的二进制序列
06 Dynamic memory
理性预测,未来音视频开发前景将是这般光景
32 Basic Statistics - Hypothesis Testing
"The Sword Offer" Problem Solution - week1 (continuously updated)