重试伪代码
重试伪代码
for attempt in 1..3:
try:
BEGIN; ...业务写入...; COMMIT
break
except Deadlock(1213) or LockTimeout(1205):
ROLLBACK
sleep(50ms * attempt + jitter)
# 超过次数:告警并抛出,避免无限重试| 可重试 | 1213 死锁、1205 锁超时(同事务重做) |
|---|---|
| 不可重试 | 1062 唯一键冲突等业务语义错误 |
| 前提 | 事务内操作幂等/可重放 |
重试次数与退避要写死上限:风暴中无界重试会放大负载。