当前位置:网站首页>MVCC实现过程
MVCC实现过程
2022-08-04 14:50:00 【棒棒吃不胖】
什么是MVCC
MVCC,多版本并发控制。
通过保存数据的历史版本,根据比较数据的版本号来决定数据的是否显示,在不需要加读锁的情况就能达到事务的隔离效果,最终可以在读取数据的时候可以同时进行修改,修改数据时候可以同时读取,极大的提升了事务的并发性能。
部分名词解释
| 名词 | 解释 |
|---|---|
| 事务版本号 | 一个事务开启后都会获得一个自增长的事务的ID,由此判断先后顺序 |
| trx_id | 记录操作该数据事务的事务ID |
| roll_pointer | 相当于一个指针,指向回滚段的undo日志 |
| row_id | 单调递增的行ID,不是必需的,占用6个字节 |
| undo log | 回滚日志,用于记录数据被修改前的信息 |
| 版本链 | 多个事务并行操作某一行数据时,不同事务对该行数据的修改会产生多个版本,然后通过回滚指针,连成一个链表 |
| 快照读 | 读取的是记录数据的可见(有旧版本)版本(不加锁) |
| 当前读 | 读取的是记录数据的最新版本(显式加锁) |
| Read View | 执行SQL语句时产生的读视图,判断当前事务可见哪个版本的数据 |
| m_ids | 当前系统活跃未提交的所有事务ID(列表) |
| up_limit_id | 生成Read View时,当前系统中活跃的读写事务中最小的事务id |
| low_limit_id | 生成Read View时,系统中应该分配给下一个事务的id值 |
| creator_trx_id | 创建当前Read View的事务ID |
MVCC实现流程

说明一下Read View的匹配规则。
1)如果数据事务ID trx_id < up_limit_id,表明生成该版本的事务在生成Read View前,已经提交(因为事务ID是递增的),所以该版本可以被当前事务访问。
2)如果trx_id >= low_limit_id,表明生成该版本的事务在生成ReadView后才生成,所以该版本不可以被当前事务访问。
3)如果 up_limit_id <= trx_id < low_limit_id,需要分3种情况讨论
(1)如果m_ids包含trx_id,则代表Read View生成时刻,这个事务还未提交,但是如果数据的trx_id等于creator_trx_id的话,表明数据是自己生成的,因此是可见的。
(2)如果m_ids包含trx_id,并且trx_id不等于creator_trx_id,则Read View生成时,事务未提交,并且不是自己生产的,所以当前事务也是看不见的;
(3)如果m_ids不包含trx_id,则说明你这个事务在Read View生成之前就已经提交了,修改的结果,当前事务是能看见的。
边栏推荐
- 广告电商系统开发功能只订单处理
- RS|哨兵二号(.SAFE格式)转tif格式
- 特殊品种的二次开户验资金额
- 属于程序猿的浪漫
- How to write SQL statements: the usage of Update, Case, and Select together
- 【历史上的今天】8 月 4 日:第一位图灵奖女性得主;NVIDIA 收购 MediaQ;首届网络安全挑战大赛完成
- 集合划分差最小问题(01背包)
- 输入输出流总结
- 宣传海报
- Lixia Action | Kyushu Yunzhang Jinnan: Open source is not a movement for a few people, popularization is the source
猜你喜欢

leetcode:255 验证前序遍历序列二叉搜索树

CloudCompare&PCL 点云按网格划分(点云分幅)

【剑指offer59】队列的最大值

郑轻新生校赛和中工选拔赛题解

leetcode:241. 为运算表达式设计优先级

Find My技术|防止你的宠物跑丢,苹果Find My技术可以帮到你

leetcode: 255 Verify preorder traversal sequence binary search tree

JCMsuite Application: Oblique Plane Wave Propagation Transmission Through Aperture

蓝牙技术|上半年全国新增 130 万台充电桩,蓝牙充电桩将成为市场主流

期货开户之前要谈好最低手续费和交返
随机推荐
【Today in History】August 4: First female Turing Award winner; NVIDIA acquires MediaQ; first Cybersecurity Challenge completed
G. Mountaineering Squad (violence & dfs)
RS|哨兵二号(.SAFE格式)转tif格式
宣传海报
MySQL优化学习笔记
1401 - Web technology 】 【 introduction to graphical Canvas
Oracle database user creation, restart, import and export
Workaround without Project Facets
Go 语言快速入门指南: 变量和常量
一看就会的Chromedriver(谷歌浏览器驱动)安装教程
苏秋贵:揭秘绿联科技用5年时间从0做到6亿,如何一枝独秀?
我爱七夕哈哈哈
本周讨论用户体验:Daedalus 的 Nemo 加入 Ambire,探索加密海洋
杭电校赛(逆袭指数)
【 HMS core 】 【 Media 】 online video editing service 】 【 material can't show, or network anomalies have been Loading state
数据链路层-------以太网协议
Phasecraft连下两城,助力英国量子技术商业化加速!
ping的原理
【北亚数据恢复】IBM System Storage存储lvm信息丢失数据恢复方案
特殊品种的二次开户验资金额