在数据库系统中,并发(多事务同时访问) 如果缺乏控制,会导致数据不一致问题,如:
保证并发一致性的核心目标,是让多个事务并发执行时,结果等价于“某种串行执行”的结果(通常称为 可串行化)。
下面从理论 → 实现机制 → 实践方案系统说明。
保证一致性依赖于事务特性:
一致性是目标,隔离性是实现手段之一
✅ 2PL 可保证可串行化
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| Read Uncommitted | ❌ | ❌ | ❌ |
| Read Committed | ✅ | ❌ | ❌ |
| Repeatable Read | ✅ | ✅ | ❌ |
| Serializable | ✅ | ✅ | ✅ |
级别越高,一致性越强,但并发性能越差
核心思想:
典型实现:
✅ 提高并发性能
✅ 避免读写冲突
MySQL InnoDB、PostgreSQL 都使用 MVCC
适用于冲突少的场景:
常见方式:
假设冲突频繁:
适合:
场景:
A 读 = 100
B 读 = 100
A 写 120
B 写 90 ← A 的更新丢失
解决:
UPDATE ... SET balance = balance - 10场景:
解决:
✅ 优先使用 MVCC + 合理隔离级别
✅ 写冲突业务用 悲观锁或乐观锁
✅ 高并发读多写少 → 乐观 + 版本号
✅ 强一致金融场景 → Serializable / 分布式事务
如果你有具体场景(如:秒杀、库存、订单),我可以给针对性方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。