当前位置:网站首页>MVCC(多版本并发控制)
MVCC(多版本并发控制)
2022-04-23 06:23:00 【cqwoniu】
1、介绍
MVCC,多版本并发控制,解决的问题:判断当前事务对某行记录是否可见(能否读取到刚刚修改的最新的结果值),这里有个可见性算法,在介绍算法之前,我们先补充两个概念和MVCC的底层原理。
两个概念:
- 当前读:读取的是数据的最新版本,总是读到最新数据,如以下几种的 sql语句:
a、select……lock in share mode
b、select……for uodate
c、update……
d、delete……
e、insert…… - 快照读:读取的是历史版本的记录,sql语句如select……
底层原理:
MVCC包括三部分:
-
第一部分是隐藏字段,表中每一行记录都会有几个用户不可见的隐藏字段,
- DB_TRX_ID:创建或者最后一次修改该记录的事务的id;
- DB_ROW_ID :隐藏主键(如果没有设置主键,且表中没有找到唯一不 为空且为整数型的字段时生成
- DB_ROW_PTR:回滚指针,指向记录的上一个版本
-
第二部分
- undolog:回滚日志,在事务的修改记录之前,会把该记录的原值先保存起来再做修改,以便修改过程中出错能够恢复原值或者其他的事务读取。当不同的事务对一条记录修改的时候,会导致该记录的undolog形成一个线表,也就是链表,链表的链首是最新记录,而链尾是最早的历史记录。
-
第三部分
- readview :事务在进行快照读的时候产生的读视图,它也有三个字段:
1. trx_list:系统活跃的事务id
2. up_limit_id: 列表中事务最小的id
3. low_limit_id:系统尚未分配的下一个事务的id
- readview :事务在进行快照读的时候产生的读视图,它也有三个字段:
接下来,我们介绍可见性算法规则:
- 首先比较DB_TRX_ID<UP_LIMIT_ID,如果小于,则当前事务能看到DBTRX_ID所在的记录;如果大于等于,则进入下一个判断
- 接下来判断DB_TRX_ID>=LOW_LIMIT_ID,如果大于等于,则代表DB_TRX_ID所在的记录在READ_VIEW生成后才出现的,那么对于事务肯定不可见;如果小于,则进入下一步判断
- 判断DB_TRX_ID是否在活跃事务中,如果在,咋代表在READ_VIEW生成时刻,这个事务还是在活跃状态,还没有commit修改的数据,当前事务也是看不到,如果不在,则说明这个事务在 READ_VIEW生成之前就已经开始commit,那么修改的结果就是可见的。
版权声明
本文为[cqwoniu]所创,转载请带上原文链接,感谢
https://blog.csdn.net/cqwoniu/article/details/124177483
边栏推荐
- USO technology was invited to share the technical framework and challenges of AI synthetic virtual characters at lvson2020 conference
- 各类日期转化的utils
- # 可视化常见绘图(二)折线图
- Typora语法详解(一)
- PyTorch 17. GPU concurrency
- PyTorch 18. torch. backends. cudnn
- 江宁医院DMR系统解决方案
- LATEX使用
- [8] Assertion failed: dims. nbDims == 4 || dims. nbDims == 5
- Machine vision series (01) -- Overview
猜你喜欢

可视化之路(十二)Collection类详解

免费开源农业物联网云平台(Version:3.0.1)

可视化常见绘图(四)柱状图

菜菜的刷题日记 | 238.除自身以外数组的乘积

Solution of self Networking Wireless Communication intercom system in Beifeng oil and gas field

可视化之路(十)分割画布函数详解

Source Insight 4.0常见问题

Discussion on the outline of short video technology

hql求一个范围内最大值

How does the public and Private Integrated walkie talkie realize cooperative work under multi-mode communication?
随机推荐
el-table 横向滚动条固定在可视窗口底部
后台管理系统框架,总有你想要的
PyTorch 14. Module class
The people of Beifeng have been taking action
数据分析学习(一)数据分析和Numpy基础
Object.create()原理,Object.create()规范,手写Object.create(),Object.create()用法
Solution of self Networking Wireless Communication intercom system in Beifeng oil and gas field
记录阿里云服务器挖矿程序处理
免费开源智能充电桩物联网SAAS云平台
不需要破解markdown编辑工具Typora
可视化常见问题解决方案(八)数学公式
江宁医院DMR系统解决方案
青龙面板拉库命令更新【2022/4/20】收藏不走丢
ES6之箭头函数细谈
安装tui-editor失败,快速解决方案
SDC intelligent communication patrol management system of Nanfang investment building
Beifeng communication helps Zhanjiang fire brigade build PDT wireless communication system
USO technology was invited to share the technical framework and challenges of AI synthetic virtual characters at lvson2020 conference
Machine vision series (01) -- Overview
可视化常见绘图(三)面积图