Visual LabINTERACTIVE LEARNING
01 · DATA MODELINGP014 MIN

Transaction 与数据一致性

把必须一起成功或一起失败的业务变化放进同一个原子边界。

MENTAL MODELTRANSACTIONS
01BEGIN
02写 Order
03预占库存
04写审计
05COMMIT / ROLLBACK
事务不是“多写几条 SQL”,而是为一组业务不变量划定不可被外界看到半成品的边界。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Transaction

让一组操作按原子性、一致性、隔离性与持久性提交或回滚。

02

Isolation

规定并发事务能看到对方哪些中间状态;隔离越强,冲突与成本通常越高。

03

Data Consistency

所有已提交数据始终满足关键业务不变量,例如可用库存不能为负。

02 · BLIND BOTS CASE

创建订单为什么必须用事务

问题现场

订单插入成功,但库存预占失败,用户看到一个永远无法履约的已确认订单。

  1. 01

    把订单、订单项、库存条件更新与审计记录放进事务。

  2. 02

    库存更新使用 available >= requested 条件。

  3. 03

    任何一步失败就回滚并返回明确冲突。

得到什么

系统只暴露完整订单或完全没有订单,不再出现半成品。

03 · PRACTICE

马上动手

  1. 为 Quote → Order 列出必须同事务完成的写入。
  2. 标出发送邮件为何应该在提交后异步执行。
04 · PITFALLS

常见坑

  • 事务中调用慢第三方接口
  • 捕获错误后仍提交
  • 把所有请求都放进超大事务
05 · KNOWLEDGE CHECK为什么发送确认邮件通常不放在数据库事务里?查看答案⌄
答案

数据库无法回滚已发送邮件,网络等待还会延长锁;应在提交后通过 outbox/任务可靠触发。