jpa - Spring Data JPA 批量插入
问题描述
我有 1,000,000 条记录要输入数据库。我有一个包含所有百万条记录的数组列表。然后我运行一个 for 循环将 arrayList 分解为包含 1,000 个项目的较小列表并保存所有内容。第一组 1,000 条插入不到一秒,然后每批 1,000 条运行时间越来越长,100,000 条记录内需要一分钟多的时间来保存。如果我停止程序并在第一批停止的地方重新插入,则在一秒钟内再次插入,那么每次插入的时间就会增加。下面是伪代码
ArrayList<Student> students= getAllRecords();
int skip =1000;
for (int i = (int) (repository.count() + 1); i < students.size(); i += skip)
{
List<String> subStudents = students.subList(i, Math.min(i + skip, students.size()));
studentRepository.saveAll(subStudents);
}