SpringBoot+Mybatis+MySQL 批量新增数据,如何高效避免OOM?
积累知识,胜过积蓄金银!毕竟在数据库开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《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; } }
在优化后的代码中,使用 while 循环避免了不必要的 for 循环对象创建,并且使用 math.min 确保每次分批插入的数据大小不超过 count。
本篇关于《SpringBoot+Mybatis+MySQL 批量新增数据,如何高效避免OOM?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注主机宝贝公众号!