全量数据迁移,可能引发内存溢出问题
问题描述:当旧数据库数据量达到40w,全量迁移过程中出现内存溢出问题
每次新增2000条数据,当程序执行到4w条左右时,程序好像中断了,数据库一直在等待响应,过了一段时间后程序报错。 2026-05-06T00:11:42.935+08:00 WARN 36400 --- [hardingSphere-1] com.zaxxer.hikari.pool.ProxyConnection : HikariPool-2 - Connection com.mysql.cj.jdbc.ConnectionImpl@78e94ac7 marked as broken because of SQLSTATE(08S01), ErrorCode(0)
相关截图:


尝试过的解决方式:我怀疑是长sql引起的oom
在每次插入操作之间添加休眠函数,降低并发量
降低每一批插入的数据量
1+2组合使用,数据全量同步完毕,我觉得主要是2起到了作用。
如果是企业级实战,在不修改mysql实例规格和相关配置的情况下,在业务端该如何处理这种情况?即使mysql实例规格能够支撑,这样高内存运行也挺危险吧。
请老师解答
3
收起
正在回答 回答被采纳积分+1
1回答
Danny_Idea
2026-05-07 09:34:43
1.得限制每次读取的数据量,可以按照offset按需加载。
2.批量写入DB,这里只要是单线程批量写入db,其实不考虑中间睡眠也是可以的。
3.关注db层负载,从截图来看,该MySQL像是一个自己建的docker容器。这里是否默认容器配置导致MySQL该有的性能没有体现出来。正常企业级的MySQL产品写入性能没有这么弱。
2.批量写入DB,这里只要是单线程批量写入db,其实不考虑中间睡眠也是可以的。
3.关注db层负载,从截图来看,该MySQL像是一个自己建的docker容器。这里是否默认容器配置导致MySQL该有的性能没有体现出来。正常企业级的MySQL产品写入性能没有这么弱。
Java+大数据+AI架构师实战营
- 参与学习 102 人
- 解答问题 126 个
专为1–5年开发者,打造极具竞争力的人才培养方案,快速突破技术/职业瓶颈 “三高”架构托底,海量数据吞吐,实时计算,AI驱动及智能化开发 大型 “社交+电商” 平台从0到1全程贯穿,高复杂架构落地
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星