01 · DATA MODELINGP014 MIN
Transaction 与数据一致性
把必须一起成功或一起失败的业务变化放进同一个原子边界。
MENTAL MODELTRANSACTIONS
01BEGIN
→02写 Order
→03预占库存
→04写审计
→05COMMIT / ROLLBACK
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Transaction
让一组操作按原子性、一致性、隔离性与持久性提交或回滚。
Isolation
规定并发事务能看到对方哪些中间状态;隔离越强,冲突与成本通常越高。
Data Consistency
所有已提交数据始终满足关键业务不变量,例如可用库存不能为负。
创建订单为什么必须用事务
订单插入成功,但库存预占失败,用户看到一个永远无法履约的已确认订单。
- 01
把订单、订单项、库存条件更新与审计记录放进事务。
- 02
库存更新使用 available >= requested 条件。
- 03
任何一步失败就回滚并返回明确冲突。
系统只暴露完整订单或完全没有订单,不再出现半成品。
马上动手
- 为 Quote → Order 列出必须同事务完成的写入。
- 标出发送邮件为何应该在提交后异步执行。
常见坑
- 事务中调用慢第三方接口
- 捕获错误后仍提交
- 把所有请求都放进超大事务
05 · KNOWLEDGE CHECK为什么发送确认邮件通常不放在数据库事务里?查看答案⌄
答案
数据库无法回滚已发送邮件,网络等待还会延长锁;应在提交后通过 outbox/任务可靠触发。