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?

学习清单

  • 背下四级别顺序和三类读异常。
维护与整理 · Yihui在 GitHub 上编辑

继续阅读

浏览全部文章

SQL与NoSQL有什么区别?MySQL和MongoDB如何选型?实际项目中如何选择?

日期:2026-09-27 标签:#面试 #MySQL #数据库 难度:简单 来源:牛面 MySQL 题库 答案说明:独立整理(站内题目标记为 VIP,未读取会员答案) 一句话答案 MySQL与MongoDB的主要差异在数据模型、事务边界、查询方式和模式演化;按业务访问模式和一致性需求选型。 面试口语版(约 60…

阅读全文