MySQL 的四种事务隔离级别?

发布于

一、四种级别(由低到高)

隔离级别 脏读 不可重复读 幻读
READ UNCOMMITTED 可能 可能 可能
READ COMMITTED 否 可能 可能
REPEATABLE READ(InnoDB 默认) 否 否 否(间隙锁)
SERIALIZABLE 否 否 否

二、问题解释

  • 脏读:读到其他事务未提交的数据。
  • 不可重复读:同一事务内两次读同一行,结果不同(被其他事务 update)。
  • 幻读:同一事务内两次范围查询,行数不同(被其他事务 insert/delete)。

三、InnoDB 默认 RR

通过 MVCC 解决不可重复读,通过间隙锁(Next-Key Lock)解决幻读。