弹簧数据保存与保存所有性能
我试图理解为什么 saveAll 比 Save Data 存储库中的 save 具有更好的性能。我正在使用,可以在这里看到。CrudRepository
为了进行测试,我创建并添加了10k个实体,这些实体只有一个id和一个随机字符串(对于基准测试,我将字符串保持为常量),添加到列表中。迭代我的列表并调用每个元素,花了40秒。调用相同的整个列表在2秒内完成。使用 30k 元素进行调用也花费了 4 秒钟。我确保在执行每个测试之前截断我的表。即使对 50 个子列表的调用进行批处理,也需要 10 秒和 30k。.save
.saveAll
.saveAll
.saveAll
整个列表的简单似乎是最快的。.saveAll
我试图浏览Spring Data源代码,但这是我发现的唯一有价值的东西。在这里,它似乎只是简单地迭代整个,并像我一样调用每个。那么,它是如何做到如此之快的呢?它是否在内部执行一些事务性批处理?.saveAll
Iterable
.save