在数据库事务隔离级别中,SERIALIZABLE(可串行化) 和 RC(Read Committed,读已提交) 是两种差异非常大的隔离级别。下面从多个维度对比它们的区别。
RC(Read Committed)
SERIALIZABLE(可串行化)
| 并发问题 | RC | SERIALIZABLE |
|---|---|---|
| 脏读 | ❌ 避免 | ✅ 避免 |
| 不可重复读 | ❌ 可能出现 | ✅ 避免 |
| 幻读 | ❌ 可能出现 | ✅ 避免 |
| 写偏斜(write skew) | ❌ 可能出现 | ✅ 避免 |
value = 1020value = 20value = 10value = 10| 项目 | RC | SERIALIZABLE |
|---|---|---|
| 并发度 | 高 | 低 |
| 锁持有时间 | 短 | 长 |
| 死锁概率 | 低 | 高 |
| 吞吐量 | 高 | 低 |
RC
SERIALIZABLE
T1: 读库存 = 10
T2: 扣库存并提交 = 9
T1: 再读库存 = 9(不一致)
T1: 读库存 = 10
T2: 想改库存 → 被阻塞或失败
T1: 提交后 T2 才能继续
RC 保证“不看脏数据”,SERIALIZABLE 保证“像一个人依次执行一样安全”。
如果你用的是 MySQL / PostgreSQL / Oracle,我也可以结合具体数据库讲实现差异。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。