【MySQL】一篇讲透MySQL的MVCC机制!

MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库管理系统中用于处理并发访问的一种机制 ,尤其在 InnoDB 等存储引擎中被广泛使用。

它通过保存数据的多个版本 ,让不同事务在并发读写时能够互不干扰,既保证了事务隔离性,又减少了锁竞争,提升了数据库的并发性能。

三个核心组件:隐藏字段、undolog版本链、Read View

核心原理

每个事务读到的 不是正在被修改的数据,而是自己对应的历史版本快照 ,所以多个事务既能同时读,又能同时写,读写互不阻塞,保证了数据库高并发。

关键机制

Undo Log版本链 维护了数据之前的版本。

那么当前事务到底能看到版本链的哪一条数据呢?

就要靠ReadView

会记下哪个数据已经提交,哪些还活跃,然后按照一套规则判断这个版本能不能看。

隔离级别下的区别

RC读已提交 :每次Select都会生成一个新的ReadView ,所以前后两次Select结果可能不一样,造成不可重复读问题。
RR可重复读 :只在第一次Select时生成一个ReadView ,后面一直复用这个ReadView,所以每次读到的数据都是一样的,这就是可重复读。

总结:

MVCC是快照读
Undo Log是历史版本的支撑
ReadView决定谁能看见哪个版本的数据

相关推荐
IT19951 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除1 小时前
redis--IO 多路复用(select + poll)
数据库·sql
paopaokaka_luck4 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
lzhdim5 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来5 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹5 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
KaiwuDB5 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
auspicious航6 小时前
PostgreSQL的备份与恢复
数据库·postgresql
这个DBA有点耶6 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒6 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql