MySQL MVCC学习总结

news/2024/11/18 12:40:54/

概念

MVCC(Multi-Version Concurrency Control)多版本并发控制,用于实现高并发读写操作。

说明

MVCC只有在事务隔离界别:读已提交(Read Commited)和可重复读(Repeatable Read)的隔离接别下工作。

原理

MVCC是借助UndoLog和ReadView实现的。

关于UndoLog

  • 当事务执行修改数据操作时,Undo Log 记录了旧值的备份,以便在事务回滚或其他需要时恢复数据;并且会在最新记录的隐藏字段DB_ROLL_PTR中记录上一版本UndoLog地址
  • UndoLog还用在事务回滚中

关于ReadView

首先介绍一下几个重要参数:

  • m_ids:记录所有当前记录活跃事务的id列表
  • min_trx_id:记录m_ids中最小值
  • max_trx_id:记录m_ids中最大值的下一个值
  • creator_trx_id:记录生成ReadView时的事务id

说明:
在Read Commited隔离级别,每次查询都需要创建新的ReadView
在Repeatable Read隔离级别,在事务开始前创建ReadView,在本事务中所有查询都用这一个ReadView,不会再次去创建ReadView。

MVCC工作原理

  1. 判断记录中隐藏字段trx_id是否在m_ids中
  • 如果在,则说明trx_id事务还处于活跃状态(没有提交或者回滚),该版本记录对当前事务不可见
  • 如果不存在,则说明trx_id事务已经提交,该版本记录对当前事务可见
  1. 如果trx_id<min_trx_id,说明是在当前事务创建ReadView前已经提交,该版本记录对当前事务可见
  2. 如果trx_id==creator_trx_id,说明当前事务对记录进行修改,在同一个事务内肯定时可见
  3. 如果trx_id>=max_trx_id,说明最新版本记录是在当前事务之后修改的,该版本记录对当前事务不可见
    按照以上逻辑,当前事务获取最新版本记录来判断可见不可见,如果可见则直接返回该版本记录,如果不可见则需要根据隐藏列DB_ROLL_PTR来查询上个版本记录,继续按照以上逻辑进行判断,直到找到可见版本。

这个东西还是有些抽象,有些绕,大家多花点时间肯定能想通,能搞明白的!!!


http://www.ppmy.cn/news/765405.html

相关文章

win7 64位系统下 Logitech(罗技) M555b蓝牙鼠标断线解决办法

笔者的笔记本电脑是ThinkPad T420。用Logitech&#xff08;罗技&#xff09; M555b鼠标已经有一年多的时间了&#xff0c;不过之前一直是在win7 32位系统下使用的&#xff0c;用了能有一年多的时间&#xff0c;一直很稳定&#xff0c;没有出现过任何问题。 最近买了一条内存&am…

《随便测测》做UI测试

目录 前排提示 使用playwright录制ui操作 创建UI模板 运行用例 查看报告 再次编辑代码 再次查看报告 selenoid服务搭建 配置selenoid服务地址 总结 前排提示 1.使用playwright[selenoid]&#xff0c;可选的远程浏览器执行用例 2.没有采用 PageObjectModule&#xff0…

ios手游怎么投屏到电脑玩

如今生活水平不断上升&#xff0c;人们更加追求高质量、高享受的生活&#xff0c;所以可以利用一切资源提高生活质量&#xff0c;享受更好的生活体验&#xff0c;比如说手机投屏电脑就可以提高我们的视觉体验&#xff0c;所以更多的人去尝试&#xff0c;那么ios手游怎么投屏到电…

手游口袋精灵java_手游口袋精灵2新手攻略 捕捉精灵前的准备

你的小勇士出发前一定要做好小编提到的以下几件事&#xff0c;正所谓不打无准备之仗&#xff0c;想要捕捉心仪的精灵就更要好好筹备啦!来跟小编一起进入口袋精灵2的梦想世界&#xff0c;学习一下新手攻略吧&#xff01; 1.商场必备 补给与存储 首先我们要到达城镇的商场&#x…

个体值0和31差多少攻击_口袋妖怪:攻略篇!个体值有多重要?6V宝可梦才是完美的精灵!...

爱生活&#xff0c;爱游戏&#xff0c;大家好&#xff0c;我是你们的好朋友汤圆。关注汤圆&#xff0c;收获更多快乐哦&#xff01; 口袋妖怪到目前为止有近900只精灵&#xff0c;18种属性&#xff0c;每种属性都代表着克制关系&#xff0c;但我们今天不讲这个&#xff0c;我们…

软件测试——白盒测试

目录 1.什么是白盒测试 1.1 白盒测试优缺点 2.白盒测试方法 2.1 静态 2.2 动态 2.2.1 语句覆盖 2.2.2 判断覆盖 2.2.3 条件覆盖 2.2.4 判定条件覆盖 2.2.5 条件组合覆盖 2.2.6 路径覆盖 2.2.7 基本路径测试法(最常使用) 1.什么是白盒测试 白盒测试也称结构测试&…

诛仙手游android转苹果,诛仙手游安卓和iOS互通吗 安卓和iOS能不能一起玩

诛仙手游安卓和iOS互通吗?安卓和iOS能不能一起玩?诛仙手游一直是诛仙心中的最爱&#xff0c;很多玩家都想一起来分享这份快乐。那么&#xff0c;诛仙手游iOS用户和安卓用户可以一起玩吗?想必很多玩家都想知道&#xff0c;下面跟小编一起来看吧! 数据并不互通&#xff1a; 目…

iOS系统玩ONS游戏的详细说明(越狱,非越狱)

简介 手机端其实玩ONS的办法一直就是那几个&#xff0c;基本的实现原理大部分都是是通过ONScript引擎。 如果你认真的学习这个引擎&#xff0c;其实是可以自己做游戏的&#xff08;少年郎们&#xff0c;我看好你们哦&#xff09;。 如果你是一个开发者&#xff0c;可以通过下…