场景形容
我的项目中需要对数据进行迁徙,数据之间存在外键关联关系,外键关系存在一对多;因而在数据迁徙之后,须要将对应的外键更新;则迁徙须要一次性实现,否则须要额定的工作量来修复外键关系(次要操作为 BatchInsert、BatchUpdate)
问题裸露
该需要迁徙数据量为亿级,运行一段时间后,发现有 3 组数据迁徙不胜利,通过日志排查,发现 Mybatis 报错,超过程序能解决的最大量,通过查问,发现最多一组数据量有 12w
问题起因
Mysql 对语句的长度有限度,默认是 4M(select @@max_allowed_packet)
经查阅我的项目数据库配置的最大包为 16M,并不足以反对 10w 级数据量的解决,故报错
后续跟进
因为我的项目业务起因,已通过其余伎俩解决此问题,在当前的工作中,遇到批量解决数据的操作,还须要全面评估以躲避数据量带来的数据传输问题