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

相关推荐
零基础的修炼4 分钟前
MySQL---C/C++链接
数据库·mysql
rannn_11123 分钟前
【Javaweb学习|黑马笔记|Day5】Web后端基础|java操作数据库
数据库·后端·学习·javaweb
q***996329 分钟前
如何查看PostgreSQL的版本
数据库·postgresql
Jaising6661 小时前
MySQL 与 Clickhouse 多数据源切换技术分析
数据库·后端·mybatis
装不满的克莱因瓶1 小时前
【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
java·数据库·mysql·架构·优化·索引·explain
爱奥尼欧1 小时前
【QT笔记】常用控件——QWidget 核⼼属性
数据库·笔记·qt
q***98522 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
数据知道2 小时前
MySQL:mysql中将表中数据进行删除后,多久空间会被释放出来?
数据库·mysql
九章-2 小时前
甘肃统计投资审核系统完成国产数据库替换:从MySQL到金仓的平稳跨越
数据库·mysql·信创·国产化替换
_Jimmy_2 小时前
Mysql假如单表数据量上亿,会出现什么问题
数据库·mysql