SpringBoot+Mybatis+MySQL 批量新增数据,如何高效避免OOM?

springboot+mybatis+mysql 批量新增数据,如何高效避免oom?

springboot+mybatis+mysql批量新增数据时,如何高效避免oom?

在批量插入数据到 mysql 时,需要确保数据量不会过大以避免出现 oom 异常。以下是如何处理这个问题的建议:

  1. 规范数据量

与数据库交互时,最好由业务层进行约束,限制数据量在一个合理范围内,避免一次性传输过量数据。

  1. 分批保存

你的分批保存思路是正确的。对于大批量数据,可以将其按一定大小分批插入数据库。你的代码中每 10000 条数据分批插入,可以根据实际情况调整这个批次大小。

  1. 优化代码

你的代码可以进一步优化,减少不必要的对象创建:

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?的详细内容,更多请关注其它相关文章!