Yihui’s Blog

MySQL 中的事务隔离级别有哪些?

日期:2026-07-11
难度:简单
标签:#面试 #MySQL #事务 #隔离级别

一句话答案

从低到高是读未提交(RU)、读已提交(RC)、可重复读(RR)和串行化(Serializable);隔离越强,异常越少,通常并发代价越高。

原理拆解

级别脏读不可重复读幻读InnoDB 常见实现
RU可能可能可能可读未提交版本
RC不会可能可能每次一致性读新 Read View
RR不会不会快照读避免;当前读靠锁控制事务内复用 Read View + next-key lock
Serializable不会不会不会强化锁定,读也可能阻塞

面试口语版

隔离级别本质是在一致性和并发之间取舍。RU 几乎不用;RC 是很多数据库常用级别,它避免脏读但同一事务两次查询可能不同;InnoDB 的 RR 通过 Read View 让普通一致性读可重复,并在锁定范围查询中用 next-key lock 控制幻读;Serializable 最严格,但并发最低。可以用 SET [SESSION] TRANSACTION ISOLATION LEVEL ... 设置会话级隔离级别。

关键细节

  • 隔离现象和具体 SQL 有关;普通快照读、锁定读、更新语句行为不同。
  • 事务隔离只是一层保证,业务仍需唯一约束、条件更新等保证业务正确性。

面试官追问

  1. RC 与 RR 的 Read View 差异?
  2. RR 如何处理当前读幻读?
  3. 哪些业务适合 RC?

学习清单

  • 背下四级别顺序和三类读异常。
Maintained by · YihuiEdit on GitHub

Keep reading

View all posts