mvcc核心实现原理

MySQL 的 MVCC(多版本并发控制,Multi-Version Concurrency Control) 是 InnoDB 存储引擎用来实现高并发下数据一致性和事务隔离的核心机制之一。MVCC 允许多个事务同时读取同一份数据而互不阻塞,是 MySQL 性能的关键所在。


📌 MVCC 是什么?

MVCC = Multi-Version Concurrency Control
即:在读取数据时,数据库不直接返回最新的数据行,而是返回当前事务可见的某个历史版本的数据副本

MVCC 主要用于实现 SQL 标准中的 READ COMMITTEDREPEATABLE READ 两种隔离级别(InnoDB 默认是 REPEATABLE READ)。


🧩 MVCC 背后的原理:隐藏字段 + Undo Log

InnoDB 表的每一行记录都有两个隐藏字段:

  • trx_id:记录这条数据是哪个事务插入的

  • roll_pointer:回滚指针,指向 Undo Log 中的历史版本

🚨 注意:这些字段是 InnoDB 自动管理的,不需要开发者手动添加。


📦 Undo Log:MVCC 的数据快照来源

每次事务对数据的 UPDATEDELETE 操作,InnoDB 都会记录一份旧数据副本到 Undo Log 中。这样在需要读取旧版本时,就可以从 Undo Log 回溯得到可见版本。

Undo Log 保证了:

  • 可以读取某个时刻的数据版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值