普通逻辑:(共有10万条sql语句)
@Test
void testSaveOneByOne() {
long b = System.currentTimeMillis();
for (int i = 1; i <= 100000; i++) {
userService.save(buildUser(i));
}
long e = System.currentTimeMillis();
System.out.println
("耗时: " + (e - b));
}
快速逻辑:(共有100条sql语句)
每次批量插入1000条数据, 插入100次即10万条数据
@Test
void testSaveBatch() {
// 1.准备一个容量为1000的集合
List<User> list = new ArrayList<>(initialCapacity: 1000);
long b = System.currentTimeMillis();
for (int i = 1; i <= 100000; i++) {
// 2.添加一个User
list.add(buildUser(i));
// 3.每1000条批量插入一次
if (i % 1000 == 0) {
userService.saveBatch(list);
// 4.清空集合, 准备下一批数据
list.clear();
}
}
}
- 相比于逐条插入,批量插入可以显著提高数据库插入性能,减少与数据库的交互次数。
- 预分配容量: 初始化
ArrayList时指定初始容量,可以减少扩容操作,提高性能。
也可以使用Iservice开启性能参数,这种速度最快
4612

被折叠的 条评论
为什么被折叠?



