保持相关更改的一致性
例如,余额转账需要扣款和入账同时成功。如果只提交一项更改,存储状态就无法代表预期操作。
事务也能保护多步更新流程,例如先读取某个值,再写入依赖该值的结果。存在并发更改时,应根据数据库和业务规则选择合适的隔离级别或锁定方式。
避免在事务中执行耗时或外部操作
不要在事务中等待用户、网络服务或长时间计算。长期打开的事务会占用资源,并增加并发处理的复杂度。
邮件、付款或文件上传等外部操作通常无法通过数据库回滚撤销。请通过明确状态、outbox 或补偿操作进行协调,并测试流程在步骤之间中断时的处理方式。