场景是: 某个接口会先查询数据库是否有这条记录,记录是有唯一索引的。 如果查询到存在则更新,没有则插入。
问题是:
在同时发起 2 个相同的请求时,则由于 2 个请求开始都查询没有这条记录,都会执行插入操作,这样会导致其中一条插入失败。
请问各位大佬有没有比较好的方案来处理类似问题。一开始想的是用 upsert,但是 upsert 每次都是删除记录再插入,id 增长太快了。
1
hustlike 2017 年 11 月 1 日 insert if not exists ?
|
2
redtea 2017 年 11 月 1 日
分布式锁
|
3
changnet 2017 年 11 月 1 日 via iPad 如果不复杂,用 duplicate key update,复杂就写个存储过程。我说的是 MySQL
|
4
panpanpan 2017 年 11 月 1 日 via iPhone
加锁,专门干这事的
|
5
fuyufjh 2017 年 11 月 1 日
INSERT ... ON DUPLICATE KEY UPDATE
|
6
alcarl 2017 年 11 月 1 日 via Android
插入失败时,再更新一下就好啦
|
7
rbe 2017 年 11 月 1 日 via iPhone
id 增长太快会有什么问题吗?
|