265 字
1 分钟
MySQL 四种事务隔离级别与选型取舍
MySQL 常见事务隔离级别从低到高是:读未提交、读已提交、可重复读、串行化。
| 级别 | 主要特点 | 可能的问题 |
|---|---|---|
| 读未提交 | 可读到其他事务未提交数据 | 脏读 |
| 读已提交 | 只读已提交版本 | 不可重复读 |
| 可重复读 | 同一事务复用快照,InnoDB 默认级别 | 范围当前读仍需防幻读 |
| 串行化 | 事务近似排队执行 | 并发能力最低 |
读已提交、可重复读通常借助 MVCC 提供非阻塞快照读;串行化则会让普通读也参与锁竞争,隔离性最强但并发代价最大。
为什么一些系统选择读已提交
可重复读需要维护更长的版本链,长事务会增加 Undo Log 压力;间隙锁范围也可能更大,带来锁等待和死锁。许多业务并不要求一个事务内所有读都看到完全相同的数据,因此会在业务层处理一致性,换取更高并发。
MySQL 四种事务隔离级别与选型取舍
https://blog.xqcherry.top/posts/interview/mysql/transaction-isolation-levels/ 目录