【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决定谁能看见哪个版本的数据

相关推荐
wWYy.2 小时前
Mysql:一行数据是怎么存储的?
android·数据库·mysql
一米阳光86618 小时前
软考(中级)软件设计师核心笔记(3)数据库系统——概念、数据库设计
数据库·笔记·职场发展·软考·软件设计师
奈斯先生Vector9 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
建筑工程企业管理系统11 小时前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
AI大模型-小华11 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
foolishlee12 小时前
Neon wal日志处理流程2
数据库
2601_9657984713 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
Cloud云卷云舒13 小时前
海山数据库(HaishanDB)面向工业云场景技术方案
数据库·haishandb·工业云·移动云海山数据库·天工云
逃逸线LOF13 小时前
Spring配置数据源{连接池}(Druid、c3p0)
java·数据库·spring
☆凡尘清心☆15 小时前
CentOS Stream 9 专用 LNMP 全自动一键脚本
linux·运维·mysql·nginx·lnmp·centos stream 9