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

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

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

在该业务方法上加上@Transactional注解,如果前端没有做限制导致重复提交数据,nginx将请求随机转发到各个节点,这样写会出现重复数据吗,不用replace into之类的sql语句

阅读 1.5k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题