当前位置: 首页 > news >正文

mysql mvcc

MySQL MVCC (多版本并发控制) 机制详解

MVCC (Multi-Version Concurrency Control) 是 MySQL InnoDB 存储引擎实现高并发读写的核心技术,它通过数据多版本来避免读写冲突,同时保证事务的隔离性。

一、MVCC 核心原理

1. 版本链结构

InnoDB 每行记录都包含两个隐藏字段:

  • DB_TRX_ID:最近修改该行的事务ID

  • DB_ROLL_PTR:指向 undo log 的回滚指针,形成版本链

2. ReadView 机制

每个事务启动时会生成一个 ReadView,包含:

  • m_ids:当前活跃事务ID集合

  • min_trx_id:最小活跃事务ID

  • max_trx_id:预分配的下一个事务ID

  • creator_trx_id:创建该 ReadView 的事务ID

二、MVCC 工作流程

1. 查询数据时的可见性判断

对于每行数据,通过比较版本号确定是否可见:

  1. 如果 DB_TRX_ID < min_trx_id:说明数据在事务开始前已提交,可见

  2. 如果 DB_TRX_ID >= max_trx_id:说明数据在事务开始后修改,不可见

  3. 如果 min_trx_id <= DB_TRX_ID < max_trx_id

    • 如果 DB_TRX_ID 在 m_ids 中:说明事务未提交,不可见

    • 否则:事务已提交,可见

2. 不同隔离级别的实现

  • READ UNCOMMITTED:直接读取最新数据,不使用 MVCC

  • READ COMMITTED:每次查询生成新 ReadView

  • REPEATABLE READ:事务第一次查询时生成 ReadView,后续复用

  • SERIALIZABLE:退化为加锁方式,不使用 MVCC

三、MVCC 关键优势

  1. 读写不阻塞:读操作不需要等待写锁释放

  2. 非锁定读:通过版本链实现一致性读

  3. 高效回滚:利用 undo log 快速回滚到指定版本

四、MVCC 实现细节

1. undo log 作用

  • 存储数据修改前的版本

  • 用于事务回滚和 MVCC 版本链构建

  • 分为 insert undo log 和 update undo log

http://www.lqws.cn/news/577081.html

相关文章:

  • Hadoop WordCount 程序实现与执行指南
  • Java 案例 6 - 数组篇(基础)
  • 第 89 场周赛:山脉数组的峰值索引、车队、考场就坐、相似度为 K 的字符串
  • 大语言模型(LLM)笔记
  • UE5 一台电脑+双显示器 配置nDisplay裸眼3D效果
  • 东芝TC78S600FNG在打印机中的应用:静音、防卡纸与能效
  • Python 数据分析与机器学习入门 (八):用 Scikit-Learn 跑通第一个机器学习模型
  • 智慧畜牧-猪场猪只行为状态检测数据集VOC+YOLO格式3790张15类别
  • Java中for与foreach
  • python+uniapp基于微信小程序的生鲜订购系统nodejs+java
  • 基于uniapp的老年皮肤健康管理微信小程序平台(源码+论文+部署+安装+售后)
  • JAVA八股文:异常有哪些种类,可以举几个例子吗?Throwable类有哪些常见方法?
  • HTML5 实现的圣诞主题网站源码,使用了 HTML5 和 CSS3 技术,界面美观、节日氛围浓厚。
  • 湖北理元理律师事务所债务解法:从法律技术到生活重建
  • 车载Tier1 supplier梳理
  • VMware vSphere 9与ESXi 9正式发布:云原生与AI驱动的虚拟化平台革新
  • Nginx反向代理与缓存功能
  • 【软考高项论文】信息系统项目的资源管理
  • GitHub Actions配置python flake8和black
  • 企业流程知识:《企业再造:企业革命的宣言》
  • 大语言模型 API 进阶指南:DeepSeek 与 Qwen 的深度应用与封装实践
  • 【Linux】Vi编辑器保存和退出
  • AIGC检测系统升级后的AI内容识别机制与系统性降重策略研究(三阶段降重法)
  • Windows桌面上的「了解此图片」怎么弄掉?
  • Day2 音频基础知识
  • HarmonyOS NEXT仓颉开发语言实战案例:电影App
  • CAU数据挖掘 支持向量机
  • 基于 SpringBoot+Vue.js 诗词鉴赏论坛交流平台设计与实现7000字论文实现
  • android APP 小米商店上架失败之《获取应用列表权限》
  • Flutter插件ios_pod