MySQL的MVCC(多版本并发控制)理解
MVCC(Multi-Version Concurrency Control)是InnoDB实现高并发的核心机制。
它通过在每行数据后保存多个版本,使读操作不需要等待锁释放,写操作也不需要阻塞读操作。 MySQL真实字段和隐藏字段
InnoDB的MVCC实现依赖于三个关键(隐藏)字段:
DB_TRX_ID:6字节,记录最后修改该行的事务ID
DB_ROLL_PTR:7字节,指向该行回滚段的指针(即指向历史版本)
DB_ROW_ID:6字节,隐藏的自增行ID(当没有主键时使用)
![图片[1]- 卡尼奶资源网MySQL的MVCC(多版本并发控制)理解- 卡尼奶资源网卡尼奶资源网-萧囡资源网-QQ活动_资源分享-源码基地-项目分享-安卓绿色软件基地](https://www.knnzy.cn/wp-content/uploads/2026/01/image-59.png)
每次更新操作都会创建一个新版本,旧版本通过这个隐藏字段DB_ROLL_PTR(存上一个版本的指针)形成版本链。读操作会根据事务的ReadView决定能看到哪个版本。
每个事务在第一次执行select时会生成一个ReadView,包含:
creator_trx_id:当前事务ID
m_ids:未提交事务ID数组
min_trx_id:m_ids中的最小值
max_trx_id:未开始事务ID
每修改一次会生成一个版本,这个版本会存入到udolog中记录,用来当事务回滚时用于将数据恢复到修改前的样子,会拿着每个版本的DB_TRX_ID字段当前事务ID,和ReadView中匹配
![图片[2]- 卡尼奶资源网MySQL的MVCC(多版本并发控制)理解- 卡尼奶资源网卡尼奶资源网-萧囡资源网-QQ活动_资源分享-源码基地-项目分享-安卓绿色软件基地](https://www.knnzy.cn/wp-content/uploads/2026/01/image-60.png)
![图片[3]- 卡尼奶资源网MySQL的MVCC(多版本并发控制)理解- 卡尼奶资源网卡尼奶资源网-萧囡资源网-QQ活动_资源分享-源码基地-项目分享-安卓绿色软件基地](https://www.knnzy.cn/wp-content/uploads/2026/01/image-61-1024x553.png)




















暂无评论内容