事务并发问题:脏读、不可重复读、幻读,怎么解决?
前言三个经典并发问题脏读、不可重复读、幻读面试必问开发必懂。一、脏读Dirty Read读取到其他事务未提交的脏数据场景A 更新未提交B 读到临时数据A 回滚 → B 读的数据是假的。解决升级到读已提交 RC二、不可重复读Unrepeatable Read同一个事务内两次读取结果不一致A 事务两次查询B 中途修改并提交导致 A 前后数据不同。解决升级到可重复读 RR三、幻读Phantom Read同一个事务范围查询中途新增/删除数据出现幻觉A 查询10条B 新增1条提交A 再次查询发现多了一条。MySQL InnoDB 通过间隙锁极大减少幻读无法彻底根除串行化可彻底解决四、问题解决总结脏读 → RC 解决不可重复读 → RR 解决幻读 → 间隙锁缓解、串行化解决