MVCC 机制(RC / RR 的真正区别)

news/2025/12/6 14:41:03/文章来源:https://www.cnblogs.com/xfydaydayup/p/19315766

🧨 先一句话总纲:

RC 每次 SELECT 都重新生成 ReadView(看最新已提交)
RR 一个事务只生成一次 ReadView(看固定快照)

区别就这一个点。
所有连锁反应,包括“不可重复读”怎么来的,都从这里推出来,简单清晰。


🔥 1. MVCC 是怎么实现的(版本链动画)

InnoDB 在每行加两个隐藏字段:

trx_id        # 最新更新这行的事务ID
roll_pointer  # 指向 undo log(老版本记录)

用这些 Undo 一条条串起来,就形成 “版本链”:

最新版本 → 上一版本 → 再上一版本 → ...trx_id=20       trx_id=15       trx_id=8

🎬 2. ReadView 是 MVCC 的灵魂

ReadView 本质是一张“我能看到哪些事务的提交”的白名单。

包含 4 个关键字段:

m_ids:当前未提交事务ID集合
min_trx_id
max_trx_id
creator_trx_id

你不需要死记这些字段,只要知道:

关键逻辑:

当一个事务在读一行时,InnoDB 会从版本链里往上找:

找第一个 “我有权限读取” 的版本

权限判断规则非常简单:

  • 版本的 trx_id 已提交 → ✔ 可读
  • 版本的 trx_id 未提交 → ❌ 跳过
  • 版本的 trx_id 是自己事务 → ✔ 可读

🧨 3. RC 与 RR 差异:关键是 ReadView 何时生成

这个点你一定要牢牢抓住:

⭐ RC(Read Committed)

每次 SELECT 都重新生成 ReadView

意味着:

同一个事务中的两次 SELECT 看到的数据可能不一样

这导致:

  • 不可重复读(Non-repeatable read)

⭐ RR(Repeatable Read)

整个事务只在第一次 SELECT 时生成 ReadView
之后所有 SELECT 都用第一次的 ReadView。

意味着:

同一个事务的所有查询看到的都是“同一个快照”

这确保:

  • 可重复读(Repeatable read)

👇 这个动画能让你瞬间懂区别

假设有一行记录:

id=1, age=18

你开启事务 T1:

SET tx_isolation='READ-COMMITTED'; -- RC
BEGIN;
SELECT age FROM user WHERE id=1;

这时 ReadView1 = [记录当前活跃事务]


这时另一个事务 T2 来更新并提交:

UPDATE user SET age=20 WHERE id=1;
COMMIT;

⭐ 现在 T1 再查一次(RC 下):

SELECT age FROM user WHERE id=1;

因为 RC 每次 SELECT 都生成新的 ReadView2,所以:

第一次看到年龄=18
第二次看到年龄=20

就是“不一致”,这就是 不可重复读


⭐ 那在 RR 下会怎样?

RR 在事务开始/第一次 SELECT 时创建 ReadView,之后都不会变。

即使 T2 已经提交,T1 仍然只能看到旧版本:

第一次看到 18
第二次仍然看到 18
第三次也看到 18

这就是 Repeatable Read。


🧩 所以 RC 与 RR 的本质差异一句话总结:

RC:每次读都看“最新提交的版本”
RR:整个事务都看“自己第一次看见的快照”

🧠 为什么 RR 能解决不可重复读?

因为:

  • ReadView 不变 → 你读的范围不变 → 看不到别人提交的更新

🔥 那 RR 能防幻读吗?(经典误区)

答案:InnoDB 的 RR + 间隙锁 = 可以防大部分幻读,但靠的是锁,不是 MVCC。

MVCC 本身不能防幻读。
原因很简单:

MVCC 只解决旧版本的问题
幻读是新插入了一行,这行根本没有旧版本

所以 InnoDB 使用 Gap Lock(间隙锁)来解决这个问题。

例如:

SELECT * FROM user WHERE age BETWEEN 10 AND 30 FOR UPDATE;

会锁住对应范围的间隙,别人无法插入 age 在这个区间的新行。


🧨 核心结论图(你面试直接说这个就够了)

                    RC                 RR
ReadView 生成      每次 SELECT        第一次 SELECT
可重复读           ❌ 不保证          ✔ 保证
不可重复读         ✔ 存在            ❌ 避免
幻读               ✔ 存在            ✔ 基本避免(靠锁)
MVCC 使用方式      读旧版本           读固定快照

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/990253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redo / Undo / WAL(为什么 MySQL 写比读复杂)

🔥 一句话先破题 MySQL 的所有写操作 = 改内存 + 写日志(两个日志) → 最后才慢慢刷磁盘数据页。 原因是:直接改磁盘太慢,且不安全,必须通过日志来“骗过磁盘的慢”。这就是 WAL(Write-Ahead Logging)的本质。…

2025年全国井式炉十大源头厂家排行榜,正规厂商专业制造商新

为帮助机械加工、热处理等行业企业精准锁定适配生产需求的井式炉供应商,避免采购环节因设备性能不达标、售后无保障走弯路,我们从核心技术实力(如炉温均匀性控制、能耗优化方案)、产品质量稳定性(含材料选用标准、…

2025 年 12 月软件开发公司权威推荐榜:创新引擎与高效交付口碑之选

2025 年 12 月软件开发公司权威推荐榜:创新引擎与高效交付口碑之选 在数字经济浪潮持续奔涌的今天,软件开发已成为驱动各行各业转型升级的核心引擎。无论是构建企业级管理系统以优化内部流程,还是开发前沿的移动应用…

10411_基于Springboot的物业管理系统

1、项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2、项目介绍 伴随城市化进程加速,物业管理属于城市社区经营关键构成局部,其信息化,智能化水准加强极为必要,本文规…

2025年12月小程序开发服务商权威推荐榜:创新赋能与用户体验口碑之选,深度解析技术实力与市场竞争力

2025年12月小程序开发服务商权威推荐榜:创新赋能与用户体验口碑之选,深度解析技术实力与市场竞争力 在数字经济与实体经济深度融合的当下,小程序凭借其轻量化、强连接、易触达的特性,已成为企业数字化转型不可或缺…

2025年12月APP开发公司权威推荐榜:创新技术与用户体验双轮驱动,精选实力派开发团队深度解析

2025年12月APP开发公司权威推荐榜:创新技术与用户体验双轮驱动,精选实力派开发团队深度解析 随着移动互联网进入存量竞争与价值深挖的新阶段,企业对APP的需求已从“从无到有”的粗放建设,转向“从有到优”的精耕细…

实用指南:2. 单片机基础概述

实用指南:2. 单片机基础概述2025-12-06 14:31 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

2025年工业设备智能化整体服务生产厂推荐:看哪家实力强

在工业4.0浪潮下,智能化设备是企业降本增效的核心引擎。食品、能源、制药等领域对定制化+洁净化+智能化的设备需求激增,但市场上服务商水平参差不齐。以下依据技术实力、行业经验与口碑,推荐5家工业设备智能化一站式…

2025年上海十大民事纠纷处理机构推荐:看哪家口碑好

本榜单依托司法部门合规记录、真实客户口碑调研与案件胜诉率数据,深度筛选出十家标杆机构,为遇到房产、婚姻等民事纠纷的用户提供客观参考,助力匹配经验丰富的服务伙伴。 TOP1 推荐:上海川汇律师事务所 推荐指数:…

2025年中国井式炉靠谱厂家推荐:井式炉制造商及定制生产企业

本榜单依托工业窑炉领域全维度市场调研与真实客户口碑,深度筛选出五家标杆企业,为机械加工、热处理等行业企业选型提供客观依据,助力精准匹配适配的井式炉定制生产伙伴。 TOP1 推荐:宜兴市中阳机械制造有限公司 推…

B+Tree(理解索引为什么这样做)

🧱 1. 先一句话:B+Tree 是为磁盘 I/O 优化出来的树 不是为了算法优雅,也不是为了数据结构好看。 数据库最贵的不是算力,是: 磁盘随机 I/O 随机读一个页(16KB)要 0.1~1ms 在 CPU 看来这是地狱般的慢。 所以索引…

2025年12月车间喷淋喷雾,车间喷雾降尘设备,高压喷雾机厂家最新推荐:喷雾精度与品牌筛选

引言在2025年12月,车间喷淋喷雾及喷雾降尘设备在工业生产中的重要性愈发凸显。国内相关行业协会对车间喷雾降尘设备进行了全面且权威的测评。据协会发布的白皮书显示,此次测评覆盖了全国超过500家高压喷雾机厂家及相…

2025年12月降尘喷淋系统,工地喷淋,车间喷淋降温系统厂家最新推荐:降温效果与品质参考

引言在 2025 年 12 月,降尘喷淋系统、工地喷淋以及车间喷淋降温系统在建筑施工、工业生产等领域的重要性愈发凸显。国内相关行业协会为了规范市场,为用户提供更具参考价值的选择,开展了一系列针对此类系统厂家的测评…

內網滲透:Metasploit、Cobalt Strike使用

1、复习msf,使用msfvenom生成木马并反弹meterpreter会话2、参考课件,使用msf完成黑客攻击内网初体验实验3、安装部署Cobalt Strike服务端并使用客户端连接4、使用Cobalt Strike生成木马并成功控制肉鸡执行屏幕截屏操…

2N7002K-ASEMI智能家居控制专用2N7002K

2N7002K-ASEMI智能家居控制专用2N7002K编辑:LL 2N7002K-ASEMI智能家居控制专用2N7002K 型号:2N7002K 品牌:ASEMI 封装:SOT-23 RDS(on):5.0Ω 批号:最新 引脚数量:3 封装尺寸:如图 特性:N沟道MOS管 工作结温:-…

2025年深圳Top5智能营销SaaS公司排行榜:南方网通优

为帮助企业精准筛选适配智能营销需求的SaaS服务商,避免技术选型弯路,本文从技术架构创新性、行业场景适配度、客户响应效率及真实口碑反馈四大维度,对深圳地区头部玩家展开评估,终梳理出2025年的5大智能营销SaaS公…

探秘中臻达:钢结构领域的靠谱之选

在钢结构行业,中臻达逐渐崭露头角,备受关注。很多人都在问中臻达怎么样,中臻达产品又如何,接下来就让我们深入了解一下。 行业优势显著 中臻达的技术创新成果在行业内具有领先地位。在工业建筑钢结构方面,其核心构…

20232411 2025-2026-1 《网络与系统攻防技术》实验八实验报告

1.实验内容Web前端 - HTML基础 Web前端 - JavaScript与DOM Web后端 - MySQL基础 Web后端 - PHP与数据库连接 基本安全攻击实践 综合安全平台实战2.实验过程 1.建立Web前端html。 (1)启动Apache。使用命令systemctl sta…

VC(9.0~14.x)运行库下载链接

VC(9.0~14.x)运行库下载链接Visual Studio VCVS2008 VC9.0VS2010 VC10.0VS2012 VC11.0VS2013 VC12.0VS2015 VC14.0VS2017 VC14.x1VS2019 VC14.x1VS2022 VC14.x1VS2026 VC14.x2Note!!! x1 and x2: x1 was the name us…

Kubernetes集群的搭建与DevOps实践(上)- 架构设计篇

本文将探讨生产级Kubernetes集群的架构设计、技术选型,以及完整的DevOps体系设计 适合读者:架构师、技术负责人、希望深入理解K8s和DevOps设计原理的工程师目录一、为什么需要Kubernetes 二、整体架构设计 三、技术选…