Mybatis 批量操作 引发上限问题

场景描述 项目中需求对数据进行迁移,数据之间存在外键关联关系,外键关系存在一对多;因此在数据迁移之后,需要将对应的外键更新;则迁移需要一次性完成,否则需要额外的工作量来修复外键关系(主要操作为BatchInsert、BatchUpdate)
问题暴露 该需求迁移数据量为亿级,运行一段时间后,发现有3组数据迁移不成功,通过日志排查,发现Mybatis报错,超过程序能处理的最大量,通过查询,发现最多一组数据量有12w
问题原因 Mysql 对语句的长度有限制,默认是 4M (select @@max_allowed_packet)
经查阅项目数据库配置的最大包为16M,并不足以支持10w级数据量的处理,故报错
Mybatis 批量操作 引发上限问题
文章图片

后续跟进 【Mybatis 批量操作 引发上限问题】由于项目业务原因,已通过其他手段解决此问题,在以后的工作中,遇到批量处理数据的操作,还需要全面评估以规避数据量带来的数据传输问题

    推荐阅读