多节点插入会出现重复数据吗?

假设通过nginx做随机转发,共有三个相同的节点,为了避免重复插入相同的账号和单号,每个节点里的业务逻辑都是先查询 有则更新无则插入,serviceImpl

//其它业务...
int i=dao.select(model.getAccount(),model.getOrderId());
if (i>0){
    dao.update(model);
}else{
    dao.insert(model);
}

[email protected],如果前端没有做限制导致重复提交数据,nginx将请求随机转发到各个节点,这样写会出现重复数据吗,不用replace into之类的sql语句

最佳答案

如果你没有加唯一索引键的话,在高并发的情况下还是有几率出现重复的,你直接加上唯一索引,在数据层面再做一层限制,这样是绝对不会出现重复的