SpringBoot+Mybatis+MySQL 批量新增数据,如何高效避免OOM?
springboot+mybatis+mysql批量新增数据时,如何高效避免oom?
在批量插入数据到 mysql 时,需要确保数据量不会过大以避免出现 oom 异常。以下是如何处理这个问题的建议:
- 规范数据量
与数据库交互时,最好由业务层进行约束,限制数据量在一个合理范围内,避免一次性传输过量数据。
- 分批保存
你的分批保存思路是正确的。对于大批量数据,可以将其按一定大小分批插入数据库。你的代码中每 10000 条数据分批插入,可以根据实际情况调整这个批次大小。
- 优化代码
你的代码可以进一步优化,减少不必要的对象创建:
public void insert(List<user> list) { int count = 10000; // 这里暂不考虑数据量小于10000的情况 int max = list.size(); while (max > 0) { int temp = Math.min(count, max); List<user> subList = list.subList(max - temp, max); userMapper.insert(subList); max -= temp; } }</user></user>
在优化后的代码中,使用 while 循环避免了不必要的 for 循环对象创建,并且使用 math.min 确保每次分批插入的数据大小不超过 count。
以上就是SpringBoot+Mybatis+MySQL 批量新增数据,如何高效避免OOM?的详细内容,更多请关注其它相关文章!