场景描述
项目中需求对数据进行迁移,数据之间存在外键关联关系,外键关系存在一对多;因此在数据迁移之后,需要将对应的外键更新;则迁移需要一次性完成,否则需要额外的工作量来修复外键关系(主要操作为BatchInsert、BatchUpdate)
问题暴露
该需求迁移数据量为亿级,运行一段时间后,发现有3组数据迁移不成功,通过日志排查,发现Mybatis报错,超过程序能处理的最大量,通过查询,发现最多一组数据量有12w
问题原因
Mysql 对语句的长度有限制,默认是 4M (select @@max_allowed_packet)
经查阅项目数据库配置的最大包为16M,并不足以支持10w级数据量的处理,故报错
后续跟进
由于项目业务原因,已通过其他手段解决此问题,在以后的工作中,遇到批量处理数据的操作,还需要全面评估以规避数据量带来的数据传输问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。