异常白细胞形态检查是查什么病| 女的排卵期一般是什么时间| 北京大学校长什么级别| 痰多咳嗽是什么原因| 1884年属什么生肖| 脚爆皮是什么原因| 下面痒用什么药效果好| 唇炎看什么科最好| 自由奔放是什么生肖| 梦见自己有孩子了是什么预兆| 人棍是什么意思| 四维彩超主要检查什么| 挂了是什么意思| 杨梅有什么功效| 省检察长是什么级别| lka是什么意思| 吃什么可以提高血小板| 臭宝是什么意思| 总出汗是什么原因| 为什么经常拉肚子| 咳嗽买什么药| 打完耳洞要注意什么| 做nt挂什么科| 安阳车牌号是豫什么| 大泽土是什么生肖| 彩霞是什么意思| 弯男是什么意思| 肠上皮化生是什么意思| 7月生日是什么星座| 银行卡睡眠状态是什么意思| 睡不着觉吃什么药| 戒指中指代表什么意思| 财主是什么意思| 一什么凳子| 夜盲症缺什么维生素| 媳妇是什么意思| 2001年是什么生肖| 舌头有齿痕吃什么药| 心梗用什么药最好| 便秘是什么引起的| 女人吃什么新陈代谢快| 生理期量少是什么原因| 眉心发红是什么原因| 什么是虚岁| 1969属什么生肖| 憨笑是什么意思| 口气重吃什么药效果好| 一热就头疼是什么原因| 双侧输尿管不扩张是什么意思| 3月份是什么季节| 搬家送什么礼物最好| 洋红色是什么颜色| 心脏有问题挂什么科| 疣是什么样子图片| 避孕套是什么| smart什么牌子| 为什么山东人个子高| 愿闻其详是什么意思| 减肥早餐适合吃什么| 孕妇缺铁吃什么| 三个代表是什么| 才思敏捷是什么意思| 梦见和死去的亲人吵架是什么意思| 淋巴细胞百分比高是什么意思| 心率是什么意思| 胜肽的主要功能是什么| 为什么吃西瓜会拉肚子| 低压高是什么原因引起的| h的车标是什么牌子| 为什么来完月经下面痒| 世界上最毒的蜘蛛叫什么| 三克油是什么意思| 西米是什么字| 生理需要是什么意思| 震慑是什么意思| 额头上长斑是什么原因造成的| 血压为什么高| va是什么维生素| 相性是什么意思| 男人补锌有什么好处| 血常规查的是什么项目| 15点是什么时辰| 特别嗜睡是什么原因| 蛏子是什么| 甲状腺结节不能吃什么| 肉蔻炖肉起什么作用| 命悬一线的意思是什么| 50岁眼睛模糊吃什么好| sansui是什么牌子| 舌炎吃什么药好得快| 吃姜有什么好处| 网红是什么意思| 7月16日什么星座| 洗面奶什么时候用最好| 七个星期五什么档次| 寒露是什么季节| 决断是什么意思| 肝肾阴虚是什么原因引起的| 10万个为什么| 辞退和开除有什么区别| 祭坛是什么意思| 喜上眉梢是什么意思| 什么是外阴炎| 一月四号是什么星座| 自叹不如什么意思| 白面是什么| 生普属于什么茶| 小孩咳嗽流鼻涕吃什么药效果好| 检查肠胃挂什么科| 胃溃疡吃什么药好| 便秘喝什么茶润肠通便| 与君共勉是什么意思| 男人吃海参有什么好处| 谨记的意思是什么| 一面之词是什么意思| 6月30日是什么日子| 乳杆菌是什么| 脘腹胀满是什么意思| 钡餐造影能查出什么| 拔完牙不能吃什么| 减肥早餐吃什么| 结石什么东西不能吃| 登高望远是什么生肖| 结肠炎不能吃什么食物| 上午十点是什么时辰| 试婚是什么意思啊| decaf是什么意思| 生肠是什么| 荔枝和什么吃会中毒| 小便绿色是什么原因| 什么是甲减病| 失眠吃什么药最好| 什么是德训鞋| 胰岛素抵抗有什么症状| 马步鱼为什么是甜的| 芒硝是什么东西| 婴儿吐泡泡是什么原因| 小孩流鼻涕咳嗽吃什么药| 三个六代表什么意思| 绝经后子宫内膜增厚是什么原因| 四大名著是什么| 鹦鹉吃什么水果| by是什么意思| 脚底发烫是什么原因| 小孩晚上不睡觉是什么原因| 不10是什么意思| 办护照需要什么证件| 什么叫生酮饮食| 声声慢是什么意思| 不羁放纵是什么意思| 密云有什么好玩的地方| 双侧骶髂关节致密性骨炎是什么病| cmf是什么| 左室舒张功能减低吃什么药| 金不换是什么菜| camus是什么酒| 10月27是什么星座| 女生为什么喊你男神| 1943年属什么| 孟德是什么意思| 得宝松是什么药| 补肾壮阳吃什么| 铁是什么颜色| 16岁属什么| 女人喝红酒有什么好处| 什么是个性| 58年属什么今年多大| 11月12日什么星座| 裙带菜不能和什么一起吃| 熊是什么生肖| mrna是什么| 小动脉瘤是什么意思| 肚脐眼左右两边疼是什么原因| 什么贤什么能| 舌头发涩是什么原因造成的| 今天天气适合穿什么衣服| 十月份生日是什么星座| 生普洱和熟普洱有什么区别| 副营级是什么军衔| 老实是什么意思| 稳是什么意思| 是什么意思| 血栓吃什么药可以疏通血管| police是什么品牌| 光影什么| 老梗是什么意思| 南瓜和什么不能一起吃| 胆水的成分是什么| 瑞舒伐他汀钙片治什么病| 两个吉念什么| 止血芳酸又叫什么名| 角膜塑形镜是什么| 抠是什么意思| 古代广东叫什么| 藏青色配什么颜色好看| renewal什么意思| 九寨沟属于什么市| 凉粉什么做的| 肝囊肿挂什么科| 九月三号是什么星座| oppo最新款是什么型号| 守望先锋是什么类型的游戏| 主动脉钙化什么意思| 打完狂犬疫苗有什么不良反应| 天空为什么会下雨| 陈坤为什么地位那么高| 转氨酶高是什么原因引起的| 蒙氏教育是什么| 胃不消化吃什么药效果最好| colombo是什么牌子| 产假什么时候开始休| 葡萄柚是什么水果| 白带异常吃什么药| 宫颈囊肿是什么原因| 咳嗽吃什么消炎药| 六月二十四是什么星座| 窥视是什么意思| 淋巴结吃什么药| 洋葱可以炒什么| dr是什么| 测幽门螺旋杆菌挂什么科| 节节草能治什么病| 迁坟需要准备什么东西| 日有所思夜有所梦是什么意思| 葡式蛋挞为什么叫葡式| 瞬息万变什么意思| 麦冬不能和什么一起吃| 8月1日是什么星座| 施食是什么意思| 扭转乾坤是什么生肖| 空调病是什么症状| 双飞什么意思| 尿是绿色的是什么原因| 枫树叶子像什么| 排湿气吃什么药效果好| 彩超能检查什么| 贫血吃什么药补血最快| barry什么意思| 仙人是什么生肖| 嘛哩嘛哩哄是什么意思| 吉兰巴雷综合征是什么病| 大头菜是什么菜| 造影手术是什么意思| 苍蝇吃什么食物| siri什么意思| 甜字五行属什么| 猪肚炖什么好吃| 孕妇梦见蛇是什么意思| 婴儿胎毛什么时候剃最好| 靓是什么意思| 硬脂酸镁是什么东西| 特别是什么意思| 什么叫布施| 吃什么养胃| 艾灸是什么| 行为艺术是什么意思| 黄毛什么意思| 林彪为什么出逃| 耳朵嗡嗡响是什么原因| 梦见抬死人是什么意思| 冰室是什么意思| 大姨妈来了喝红糖水有什么功效| 草是什么颜色的| 手抽筋是什么原因引起的| 百度

脖子不舒服看什么科

开发 前端
MVCC 主要应用于 InnoDB 引擎中的 RC 事务隔离级别和 RR 隔离级别,其中 RC 隔离级别每次快照读都会生成一个新的 Read View,而 RR 隔离级别只在第一次快照读时生成 Read View,之后会复用 Read View,从而解决了(部分)幻读问题。
百度 帅气的飞行表演不能错过!有美丽的郁金香,没有妹子可以抗拒!以及热情奔放的牛仔文化。

MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题。它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离性,从而避免了传统的锁机制所带来的资源争用和阻塞问题。

所谓的一致性问题,就是在并发事务执行时,应该看到那些数据和不应该看到那些数据。

在 MVCC 机制中,每个事务的读操作都能看到事务开始之前的一致性数据快照,而不受其他并发事务的修改的影响。核心思想是通过创建多个数据版本,保持事务的一致性和隔离性

使用 MVCC 机制解决了 RR 隔离级别中,部分幻读问题,但又没把全部幻读问题都解决。

  • MVCC 解决了 RR 隔离级别中,快照读的幻读问题。多次查询快照读时,因为 RR 级别是复用 Read View(读视图),所以没有幻读问题。
  • 但 MVCC 解决不了 RR 隔离级别中,如果遇到快照读和当前读(读取当前最新的数据)中间发生过添加操作,那么 Read View 不能复用,就出现了幻读的问题。

快照读和当前读

快照读:是指在一个事务中,读取的数据版本是在事务开始时已经存在的数据版本,而不是最新的数据版本。这种读取方式提供了事务在执行期间看到的数据视图的一致性,select 查询就是快照读当前读:是指在事务中读取最新的数据版本,以下几种操作都是快照读:

  • select ... for update;
  • select ... lock in share mode;
  • insert ...
  • update ...
  • delete ...

MVCC 实现原理

MVCC 主要是依靠以下两部分实现的:

  1. Undo Log 链
  2. Read View(读视图或者叫一致性视图)

Undo Log 链

我们知道 Undo Log 主要是用于数据库中事务回滚的,但在 MVCC 机制中也发挥着重要的作用,那什么是 Undo Log 链呢?

Undo Log 链是指在每个数据对象上维护的 Undo Log 记录链表。每张表都会有与之相对应的 Undo Log 链,用于记录修改前的数据信息(以方便数据进行回滚)。

图片图片

Read View

Read View(读视图)用于管理事务之间数据可见性的一种机制。Read View 在特定时刻为事务创建的一个快照,该快照包含了在该时刻所有未提交事务的事务标识符,以及其他一些辅助信息。

在 Read View 中包含了以下 4 个主要的字段:

  1. m_ids:当前活跃的事务编号集合。
  2. min_trx_id:最小活跃事务编号。
  3. max_trx_id:预分配事务编号,当前最大事务编号+1。
  4. creator_trx_id:ReadView 创建者的事务编号。

RC 级别中,每次快照读都会生成一个全新的 Read View,而 RR 级别中同一个事务会复用一个 Read View。

有了 Read View 和 Undo Log 链之后,并发事务在查询时就知道要读取那些数据了。

判断方法

判断方法是根据 Read View 中的 4 个重要字段,先去 Undo Log 中最新的数据行进行比对,如果满足下面 Read View 的判断条件,则返回当前行的数据,如果不满足则继续查找 Undo Log 的下一行数据,直到找到满足的条件的数据为止,如果查询完没有满足条件的数据,则返回 NULL。

判断规则

  1. trx_id==creator_trx_id:先将 Undo Log 最新数据行中的 trx_id 和 ReadView 中的 creator_trx_id 进行对比,如果他们两个值相同,则说明是在同一个事务中执行,那么直接返回当前 Undo Log 的数据行即可,如果不相等,则继续下面流程。
  2. trx_id<min_trx_id:如果 trx_id 小于 min_trx_id,则说明在执行查询时,其他事务已经提交此行数据了,那么直接返回此行数据即可,如果大于等于,则继续下面流程。
  3. trx_id>max_trx_id:如果 trx_id 如果大于等于 max_trx_id,则说明该行数据比当前操作执行的晚,当前行数据不可见,继续执行后续流程。
  4. min_trx_id<=trx_id<max_trx_id:trx_id 在 min_trx_id 和 max_trx_id 之间还分为以下两种情况:
  1. trx_id 在 m_ids 中:说明事务尚未执行完,该行数据不可被访问。
  2. trx_id 未在 m_ids 中:说明事务已经执行完,可以返回该行数据。

以上判断规则从 Undo Log 最新的行数据,逐行对比,直到找到匹配的数据,否则查询完未匹配上,则返回 NULL。

小结

MVCC 的实现主要依赖读视图 Read View 和 Undo Log 链,通过 Read View 中的 4 个字段,判断要读取 Undo Log 中数据,从而解决了数据库并发访问中,数据一致性的问题。

MVCC 主要应用于 InnoDB 引擎中的 RC 事务隔离级别和 RR 隔离级别,其中 RC 隔离级别每次快照读都会生成一个新的 Read View,而 RR 隔离级别只在第一次快照读时生成 Read View,之后会复用 Read View,从而解决了(部分)幻读问题。

责任编辑:武晓燕 来源: Java中文社群
相关推荐

2025-08-05 15:13:02

2025-08-05 00:00:01

JWT客户端存储加密令

2025-08-05 07:19:00

2025-08-05 10:39:50

@Async注解代理

2025-08-05 10:33:39

AOPSpring编程

2025-08-05 08:28:37

DMAIOMMap

2025-08-05 14:56:22

反射Java数据库连接

2025-08-05 07:00:00

2025-08-05 18:18:58

项目Spring线程池

2025-08-05 08:36:43

零拷贝数据传输DMA

2025-08-05 06:56:24

零拷贝技术数据传输数据拷贝

2025-08-05 17:36:54

2025-08-05 16:30:27

2025-08-05 16:49:20

volatileJava并发编程

2025-08-05 08:35:06

2025-08-05 09:47:34

ReactSetState机制

2025-08-05 11:33:31

2025-08-05 14:45:14

零拷贝技术CPU 拷贝Zero-copy

2025-08-05 09:02:03

2025-08-05 00:00:00

点赞
收藏

51CTO技术栈公众号

脂肪浸润是什么意思 一级法官是什么级别 怀孕抽烟对孩子有什么影响 多元是什么意思 肝红素高是什么原因
乌鱼是什么鱼 梦见涨大水是什么意思 三大产能营养素是什么 慢性疾病都包括什么病 考试穿什么颜色的衣服
唐僧真名叫什么 张纯如为什么自杀 山西的简称是什么 cm3是什么单位 胃酸烧心吃什么药
朝鲜和韩国什么时候分开的 婴儿奶粉过敏有什么症状 牙齿里面疼是什么原因 大陆去台湾需要什么手续 甲状腺腺体回声欠均匀是什么意思
女人更年期吃什么药调理最好bjcbxg.com 指甲月牙白代表什么96micro.com 灰指甲用什么药好hcv8jop9ns7r.cn 罘是什么意思hcv7jop9ns8r.cn 低压高什么原因hcv9jop0ns1r.cn
肚子大腿细是什么原因hcv8jop3ns5r.cn 子宫病变有什么症状cl108k.com 疑心病是什么意思hcv8jop9ns1r.cn 北京的简称是什么hcv9jop0ns1r.cn 每天吃松子有什么好处clwhiglsz.com
白羊座的幸运色是什么hcv8jop8ns0r.cn 梦见买苹果是什么征兆hcv8jop1ns1r.cn 什么不息wzqsfys.com 今年什么时候起伏hcv8jop7ns4r.cn 996什么意思hanqikai.com
印泥用什么能洗掉hcv8jop2ns2r.cn 叶酸是什么东西hcv7jop7ns1r.cn 甲基硫菌灵治什么病hcv7jop9ns5r.cn 4岁小孩流鼻血是什么原因huizhijixie.com 奔豚是什么意思hcv9jop1ns5r.cn
百度