MySQL 的四种事务隔离级别?
发布于
一、四种级别(由低到高)
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| READ UNCOMMITTED | 可能 | 可能 | 可能 |
| READ COMMITTED | 否 | 可能 | 可能 |
| REPEATABLE READ(InnoDB 默认) | 否 | 否 | 否(间隙锁) |
| SERIALIZABLE | 否 | 否 | 否 |
二、问题解释
- 脏读:读到其他事务未提交的数据。
- 不可重复读:同一事务内两次读同一行,结果不同(被其他事务 update)。
- 幻读:同一事务内两次范围查询,行数不同(被其他事务 insert/delete)。
三、InnoDB 默认 RR
通过 MVCC 解决不可重复读,通过间隙锁(Next-Key Lock)解决幻读。