导航菜单

事务机制专题

事务是 MySQL 数据库的核心特性,理解事务的 ACID 特性、隔离级别和 MVCC 实现是面试的必考内容。

常见题型

题型核心知识点典型问题
ACID原子性、一致性、隔离性、持久性解释 ACID、如何实现
隔离级别读未提交、读已提交、可重复读、串行化四种隔离级别、解决什么问题
并发问题脏读、不可重复读、幻读各种问题的定义和解决方案
MVCC多版本并发控制MVCC 实现原理、Read View
锁机制共享锁、排他锁、间隙锁各种锁的使用场景
Redo/Undo Log持久性、原子性Redo 和 Undo 的作用

事务隔离级别对比

隔离级别脏读不可重复读幻读MySQL 默认
读未提交(READ UNCOMMITTED)-
读已提交(READ COMMITTED)-
可重复读(REPEATABLE READ)✓ (部分)
串行化(SERIALIZABLE)-

并发问题详解

问题定义示例
脏读读取未提交的数据A 修改未提交,B 读到
不可重复读同一事务两次读取结果不同A 读取后,B 修改并提交,A 再读
幻读范围查询出现新数据A 查询范围,B 插入新行,A 再查

MVCC 关键组件

组件作用
隐藏字段DB_TRX_ID、DB_ROLL_PTR
Undo Log回滚日志,存储旧版本
Read View读视图,判断可见性
Purge 机制清理过期 Undo Log

锁类型对比

锁类型分类作用范围兼容性
共享锁(S)行锁单行✓ 与 S
排他锁(X)行锁单行✗ 与 S/X
间隙锁Gap 锁范围✓ 与 Gap
临键锁Next-Key范围+记录✓ 与 Gap

章节

搜索