MVCC 是什么?InnoDB 是如何实现 MVCC 机制的?

MVCC 是指多版本并发控制(Multiversion Concurrency Control),是一种并发控制机制,常用于数据库系统中,用于实现事务的并发控制。它允许在同一时间多个事务对同一个数据集合进行读取操作,同时防止数据不一致 和其他并发问题。

InnoDB 是 MySQL 中最常用的存储引擎之一,它的 MVCC 实现是通过在每行记录中添加两个隐藏的列,分别记录 行的创建时间和过期时间,以此来判断事务对该行记录的可⻅性。当一个事务需要读取一行记录时,InnoDB 首先 读取这行记录的创建时间和过期时间,并根据这些信息判断该行记录是否可⻅。如果创建时间早于当前事务的开始 时间,且过期时间晚于当前事务的开始时间,那么该行记录对当前事务可⻅。

在 InnoDB 中,MVCC 主要是通过实现以下几个机制来实现的:

  1. 事务版本号:每个事务都有一个唯一的版本号,用来标识该事务的创建时间。

  2. 读取视图:每个事务在开始时都会创建一个读取视图,记录该事务开始时间和其他信息。在事务执行期间,所有读取操作都要检查该视图,以确定读取哪些版本的数据。

  3. undo日志:在事务执行期间,如果对数据进行修改,那么会先将原始数据复制一份到undo日志中。这样, 在回滚操作时就可以使用 undo 日志中的数据来还原原始数据。

  4. 快照读取:在某些情况下,事务需要读取一个数据的历史版本,而不是当前版本。这时可以使用快照读取来实现,即在读取时根据事务开始时间和 undo 日志来读取历史版本的数据。

相关推荐
qq_401700413 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
程序员阿鹏4 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
风哥2号4 小时前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
liangsheng_g4 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
蓝速科技5 小时前
信创终端 POC 测试实战与选型避坑指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理
风哥2号5 小时前
数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门
数据库
ocean21035 小时前
2025-2026年C语言专题面试高频知识点洞察
c语言·面试·面试经验
杨云龙UP5 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
letisgo57 小时前
JAVA 高级进阶18篇《生产级RAG:切分、检索、评估与Graph RAG全链路实战》
java·面试·检索增强·rag·graph rag
Lzh编程小栈7 小时前
STM32 DMA深度解析|原理、完整工作流程、寄存器、中断联动,嵌入式面试高频考点(F1系列)
c语言·stm32·单片机·mcu·面试