用途:帮助在代码中实现正确的事务处理,包括隔离级别选择、失败重试与回滚,适用于并发异常、死锁、重复扣款等场景。
主要能力:按异常类型(丢失更新、幻读、写偏斜、双花)推荐最低隔离级别;说明 Postgres 与 MySQL 在 READ COMMITTED、REPEATABLE READ、SERIALIZABLE 下的行为差异;给出死锁预防(一致加锁顺序、SELECT FOR UPDATE SKIP LOCKED、FOR UPDATE OF、advisory lock)、序列化失败重试(Postgres 错误码 40001、40P01,指数退避加抖动,必须重跑整个事务)、保存点局部回滚、乐观锁版本列、长事务排查(pg_stat_activity、pg_blocking_pids)等方案。
使用方式:先确认数据库引擎、要解决的异常、ORM 或原生 SQL、竞争程度、事务内是否有长操作;再据此选择隔离级别并落地实现。
限制:序列(nextval)与外部副作用(邮件、webhook、支付)无法回滚,应移出事务或用 outbox;部分 ORM 会静默按查询开启事务或只重试失败语句,需核实框架行为。具体代码示例与命令以原文为准。