一、背景
- 因为上游系统不可控性,下游系统的唯一约束不可知,数据推送的过程中可能数据乱序的
- 如果存在并发上传,没有加锁,非常大的可能性出现死锁
二、解决思路
- 手动对数据进行排序
- 接口对相同来源请求进行加锁、队列
- 在代码生成的过程标记唯一索引字段,统一抽象服务层插入和更新方法,对数据排序和拆分单次插入量
三、实现
基于统一抽象服务层解决思路
- 查询唯一索引字段
MYSQL
:
INNODB_SYS_INDEXES
中记录表的索引INNODB_SYS_FIELDS
记录索引的字段和顺序
- 自定义唯一索引注解
@UK(group=“”, sort=1)
- 代码生成模块
略
- 服务层
- 如果存在主键则使用主键排序
- 存在多个唯一约束,优先使用
INNODB_SYS_INDEXES
表中ID最小唯一约束