MySQL MVCC 原理,其实没那么难,一篇文章讲明白
很多人第一次学 MySQL 的 MVCC都被Read View、Undo Log、trx_id、隐藏字段这些概念搞晕了。其实MVCC 的核心思想只有一句话不要覆盖旧数据而是保留历史版本让不同事务读取不同版本的数据。只要理解了这一点后面的知识就很好理解了。为什么需要 MVCC假设现在有一张用户表idbalance1100有两个事务事务 ABEGIN; UPDATE user SET balance 200 WHERE id 1;注意这时候事务 A还没有提交。与此同时事务 B 查询SELECT balance FROM user WHERE id 1;这里就有两个问题如果让事务 B 等待查询性能会很差。如果直接读取 200事务 A 后面回滚怎么办MySQL 想出了一个办法事务 A 修改数据时不覆盖原来的数据而是生成一个新版本。于是数据就变成了最新版本200事务A ↑ 旧版本100事务 A 自己看到的是200,事务 B 因为事务 A 没提交所以仍然看到100。这样读写互不影响。这就是MVCC多版本并发控制。历史版本存在哪里都存在Undo Log回滚日志。假设数据经历了三次修改100、200、300Undo Log 会把旧版本串起来300 ↓ 200 ↓ 100所以Undo Log 不仅用于事务回滚还保存了数据的历史版本这也是 MVCC 能工作的基础。那事务怎么知道该读哪个版本这就轮到Read View读视图了。你可以把 Read View 理解成一个过滤器。它只负责一件事判断这个版本当前事务能不能看。例如当前有两个版本200未提交 ↓ 100已提交事务查询时先看 200发现它还没提交不能读继续往前找找到 100已经提交。可以读。于是最终返回 100。整个过程其实就是最新版本 ↓ 能看吗 ↓ 不能 ↓ 找上一版本 ↓ 能看吗 ↓ 可以 ↓ 返回Hidden Columns隐藏字段又是什么InnoDB 的每一行数据其实都会偷偷保存两个重要信息trx_id最后一次修改这条数据的事务 ID。roll_pointer指向 Undo Log也就是上一版本。例如balance 300 trx_id 100 roll_pointer --- 200再继续200 ↓ 100于是所有历史版本就形成了一条版本链。Read View 就是顺着这条链一直往前找直到找到当前事务可以读取的那个版本。MVCC 能解决什么问题一句话让读操作不用等待写操作。如果没有 MVCCUPDATE ↓ 加锁 ↓ SELECT 等待有了 MVCCUPDATE ↓ 生成新版本 SELECT ↓ 读取旧版本读写互不阻塞所以 MySQL 才能支持这么高的并发。MVCC 是不是所有查询都会用MVCC 只用于快照读Snapshot Read。如SELECT * FROM user;如果你执行SELECT * FROM user FOR UPDATE;或者UPDATE ...这些都属于当前读Current Read需要加锁而不是使用 MVCC。所以可以记住一句话普通 SELECT 用 MVCC涉及加锁的操作走锁机制。最后总结其实 MVCC 就三个东西Undo Log保存历史版本。Read View决定当前事务应该读哪个版本。隐藏字段trx_id、roll_pointer把所有历史版本串成一条链。它们三者配合实现了读数据不用等写数据既保证了事务隔离又提高了数据库并发性能。如果用一句最简单的话总结 MVCCMVCC 本质上就是“不覆盖旧数据而是保存多个版本让不同事务读取不同版本的数据”。

相关新闻

2026年最新!欧美外教一对一网课哪家好?资深家长选课实测

2026年最新!欧美外教一对一网课哪家好?资深家长选课实测

去年这个时候,我正为给孩子选英语网课焦头烂额。打开手机一搜“欧美外教一对一”,铺天盖地的广告让人眼花缭乱。试听了五六家,销售话术大同小异,价格从几十到几百一节课不等,越听越糊涂。折腾了两个月,总算…

2026/8/1 13:01:36 阅读更多 →
技术深度剖析:Thorium浏览器在SIMD指令集优化与隐私增强领域的创新实践

技术深度剖析:Thorium浏览器在SIMD指令集优化与隐私增强领域的创新实践

技术深度剖析:Thorium浏览器在SIMD指令集优化与隐私增强领域的创新实践 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are toward…

2026/8/1 13:01:36 阅读更多 →
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析

一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析

一个被BCL遗忘的高性能集合&#xff1a;C# CircularBuffer深度解析 在 .NET 的 BCL&#xff08;Base Class Library&#xff09;中&#xff0c;我们习惯了 List<T>、Dictionary<TKey, TValue>、Queue<T> 这些常用集合。但有一个高性能数据结构——环形缓冲区…

2026/8/1 13:01:36 阅读更多 →

最新新闻

AI代码崩溃率下降92%的秘密:从零构建企业级异常规范体系

AI代码崩溃率下降92%的秘密:从零构建企业级异常规范体系

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI代码崩溃率下降92%的秘密&#xff1a;从零构建企业级异常规范体系 在大型AI工程实践中&#xff0c;异常处理长期处于“救火式”状态&#xff1a;日志散落、错误码不统一、重试逻辑随意嵌入、SRE无法快速定位…

2026/8/1 13:57:54 阅读更多 →
3步轻松搞定黑苹果SSDT补丁:SSDTTime实用配置手册

3步轻松搞定黑苹果SSDT补丁:SSDTTime实用配置手册

3步轻松搞定黑苹果SSDT补丁&#xff1a;SSDTTime实用配置手册 【免费下载链接】SSDTTime SSDT/DSDT hotpatch attempts. 项目地址: https://gitcode.com/gh_mirrors/ss/SSDTTime 对于想要体验黑苹果的新手来说&#xff0c;SSDTTime是一款高效实用的ACPI补丁生成工具&…

2026/8/1 13:57:54 阅读更多 →
大型路演活动音视频直播技术方案全解析

大型路演活动音视频直播技术方案全解析

最近在成都凯德新南和BZ路演现场&#xff0c;KISS OF LIFE组合带来的《Midas Touch》表演吸引了众多Kpop爱好者的关注。作为技术博主&#xff0c;虽然不常涉及娱乐内容&#xff0c;但这次演出背后涉及的音视频技术、现场直播方案以及活动策划中的技术支撑确实值得探讨。本文将从…

2026/8/1 13:57:54 阅读更多 →
UE5游戏音频开发实战:Wwise动态混音、空间化与Audio Volume配置详解

UE5游戏音频开发实战:Wwise动态混音、空间化与Audio Volume配置详解

1. 项目概述&#xff1a;从“背景音乐”到“声音世界”的进化在游戏开发&#xff0c;尤其是UE5项目里&#xff0c;声音早就不是简单的“背景音乐”或“枪声”了。它已经演变成一个需要精心设计和实时响应的“声音世界”。过去&#xff0c;我们可能只是把几个音频文件拖进引擎&a…

2026/8/1 13:57:54 阅读更多 →
音乐格式转换工具:如何在浏览器中解决加密音乐播放问题

音乐格式转换工具:如何在浏览器中解决加密音乐播放问题

音乐格式转换工具&#xff1a;如何在浏览器中解决加密音乐播放问题 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: http…

2026/8/1 13:57:54 阅读更多 →
7英寸电容触摸屏模块(7EP-CAPLCD)硬件设计与Linux驱动开发全解析

7英寸电容触摸屏模块(7EP-CAPLCD)硬件设计与Linux驱动开发全解析

1. 项目概述&#xff1a;从一串神秘代码到电容式触摸屏的深度解析最近在几个硬件开发社区和供应链群里&#xff0c;频繁看到“7EP-CAPLCD”这个代号在流传。乍一看&#xff0c;它像是一串随机的产品料号&#xff0c;但对于我们这些常年泡在显示和交互模块一线的工程师来说&…

2026/8/1 13:56:54 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →