标准答案

  1. 自动提交适合单条已能表达完整不变量的 INSERT、UPDATE 或 DELETE,例如带条件的库存扣减。
  2. 显式事务适合必须共同成功的多步本地写入,例如创建订单、写订单明细和写审计记录。
  3. 事务内的每条读写都应服务于同一个业务原子单元,避免把不相关操作绑在一起。
  4. 频繁单条提交会增加日志刷盘与网络往返,批量写入可降低开销,但批次大小要受锁、日志和恢复能力约束。
  5. 事务异常时必须明确 rollback、连接归还和错误传播,不能让连接带着未完成事务回到池中。

题目解析

显式事务的价值是让失败可预测,而不是越大越好。一组操作若能用单条原子 SQL 完成,往往比先读后写的事务更短、更容易扩展。

框架的默认自动提交经常让开发者误以为“加了 begin 才有一致性”。实际应检查每个 DAO、ORM flush 和异常路径是否真的处在同一事务上下文。

常见误区

  • 多条相关写入依赖默认自动提交,第二条失败后留下半完成业务数据。
  • 开启显式事务后忘记提交或回滚,连接池复用时污染后续请求。

作者信息