很多“先查再插”的唯一性校验,在并发下都不可靠。两个请求同时查询都不存在,然后同时插入,就会产生重复数据。

真正可靠的办法是数据库唯一索引兜底。应用层可以提前提示,但最终一致性要交给唯一约束。

UNIQUE KEY uk_user_phone (phone)

捕获唯一键冲突后,再转换成业务错误返回。这样用户体验和数据正确性都能兼顾。

不要把数据库约束当成可有可无的补充。它是最后一道一致性边界。

分类: 数据库与缓存 标签: 事务 MySQL 索引

评论

-- 评论已关闭 --

全部评论