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

相关推荐
gopher95112 小时前
go中的Ticker
数据库·golang
key065 小时前
网络安全等级保护测评实施过程
数据库·安全·web安全·安全合规
程序猿阿伟5 小时前
《政企API网关:安全与性能平衡的转型实践》
网络·数据库·安全
muren5 小时前
Qt DuckDB SQL 驱动插件
数据库
一匹电信狗6 小时前
【MySQL】数据库基础
linux·运维·服务器·数据库·mysql·ubuntu·小程序
LoneEon6 小时前
Ubuntu 部署 ClickHouse:高性能分析型数据库(附shell脚本一键部署↓)
数据库·clickhouse
189228048617 小时前
NX482NX486美光固态闪存NX507NX508
大数据·网络·数据库·人工智能·性能优化
有一个好名字8 小时前
从 3.6 亿订单表到毫秒级查询:分库分表指南
数据库·oracle
奥尔特星云大使10 小时前
MySQL 备份基础(一)
数据库·sql·mysql·备份·mysql备份