当前位置:网站首页>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生成之前就已经提交了,修改的结果,当前事务是能看见的。
边栏推荐
猜你喜欢

数据库恢复

Zheng Qing freshmen school competition and middle-aged engineering selection competition

Qt的QItemDelegate使用

1403. Minimum Subsequence in Non-Increasing Order

leetcode: 212. Word Search II

C# SolidWorks二次开发---工程图简单版标注孔信息

1403. 非递增顺序的最小子序列

Compound Refractive Lenses for X-ray Focusing

大众点评搜索相关性技术探索与实践

Hangzhou Electric School Competition (Counter Attack Index)
随机推荐
【北亚数据恢复】IBM System Storage存储lvm信息丢失数据恢复方案
1403. Minimum Subsequence in Non-Increasing Order
Oracle database user creation, restart, import and export
期货开户之前要谈好最低手续费和交返
ping的原理
Hangzhou Electric School Competition (Counter Attack Index)
leetcode: 259. Smaller sum of three numbers
1401 - Web technology 】 【 introduction to graphical Canvas
Makefile syntax and usage notes
Bluetooth Technology|In the first half of the year, 1.3 million charging piles were added nationwide, and Bluetooth charging piles will become the mainstream of the market
xpath获取带命名空间节点注意事项
Latex 去掉行号
兆骑科创创新创业大赛活动举办,线上直播路演,投融资对接
Resharper 如何把类里的类移动到其他文件
Zheng Qing freshmen school competition and middle-aged engineering selection competition
一看就会的Chromedriver(谷歌浏览器驱动)安装教程
在腾讯,我的试用期总结!
CCF GLCC officially opened | Kyushu Cloud open source experts bring generous bonuses to help universities promote open source
JCMsuite Application: Oblique Plane Wave Propagation Transmission Through Aperture
Crawler - basic use of selenium, no interface browser, other uses of selenium, cookies of selenium, crawler cases