高并发下重复插入问题及更新同一行数据
重复插入问题
很多业务场景下,我们需要记录有唯一性,不允许重复插入。一般业务代码的逻辑通常是先查询,表记录存在则返回,不存在则插入数据。
但是在高并发场景下,多个线程同时进行查询,都查询到没有记录,随后都进行插入,这样就会出现需要唯一记录的重复插入。
解决方案
方案一: 使用悲观锁/分布式锁
该方案实现简单,但很影响性能。
方案二: 唯一性约束
使用 唯一性约束 ,业务代码通过捕获唯一性约束冲突的异常进行处理。但如果表设计中存在状态字段,唯一约束是某种状态的约束,那么添加唯一性约束的方式就不可行...
edwardchu.hashnode.dev1 min read