Spring data 保存 saveAll 表现
我正试图了解原因 saveAll 具有比存储库中的更好的性能 Spring Data. 我用
, 可以看到哪个
https://docs.spring.io/spring- ... .html
.
用于测试,我创建并添加到列表中 10 千实体只有标识符和随机字符串 /对于benchmarck,我保持恒定/. 重复我的清单和造成
对于每个元素,它需要 40 秒。 称呼
在它落后的同一个列表中 2 秒。 称呼
偶数 30K 元素占用 4 秒。 在执行每个测试之前,我肯定踢了我的表。 甚至包装
拨打驴子 50 占据 10 秒S. 30 千
清楚的
与整个列表一起,它似乎是最快的。
我试图查看源代码 Spring Data, 但
https://github.com/spring-proj ... .java
我唯一找到有价值的东西。 在这里看来
只是重复一切
和原因
正如我所做的那样,在每个人。 那么这么快地发生这种情况吗? 它是否在自己内部进行了一些交易包?
CrudRepository
, 可以看到哪个
https://docs.spring.io/spring- ... .html
.
用于测试,我创建并添加到列表中 10 千实体只有标识符和随机字符串 /对于benchmarck,我保持恒定/. 重复我的清单和造成
.save
对于每个元素,它需要 40 秒。 称呼
.saveAll
在它落后的同一个列表中 2 秒。 称呼
.saveAll
偶数 30K 元素占用 4 秒。 在执行每个测试之前,我肯定踢了我的表。 甚至包装
.saveAll
拨打驴子 50 占据 10 秒S. 30 千
清楚的
.saveAll
与整个列表一起,它似乎是最快的。
我试图查看源代码 Spring Data, 但
https://github.com/spring-proj ... .java
我唯一找到有价值的东西。 在这里看来
.saveAll
只是重复一切
Iterable
和原因
.save
正如我所做的那样,在每个人。 那么这么快地发生这种情况吗? 它是否在自己内部进行了一些交易包?
没有找到相关结果
已邀请:
1 个回复
詹大官人
赞同来自:
, 与一个交易的开放相比
.
注意定义
和
, 它们都是注释
. 如果您的项目配置正确,显然发生,因为实体存储在数据库中,这意味着只要调用这些方法中的一个,就会创建该事务。 如果你打电话
在循环中,它意味着 , 新交易是每次打电话时创建的
, 但在这种情况下
无论持久实体数量如何,都会为其创建一个挑战,并且为此创建了一个事务。
我假设测试本身不是在交易中执行的 , 如果它必须在事务中运行,则将在此事务中执行保存的所有呼叫,因为默认事务分发等于
, 这意味着如果交易已经打开,则将在其中执行呼叫。 如果您打算使用 spring data, 我强烈推荐你读过的
https://docs.spring.io/spring/ ... .html
.