VNR*_*VNR 2 java oracle hibernate jpa spring-data-jpa
我在使用 Spring Data JPA 存储库一次插入 100 000 条记录时遇到问题。当我们执行时,repo.save(List<Objs>)如果我们使用序列生成器,它会花费很多时间,因为它会查询数据库中的 nextval。我正在使用 Oracle,哪种 ID 生成最好?
序列生成器可能是一个不错的选择,但您必须调整其参数。
在您的特定情况下,我将开始尝试分配大小,然后尝试策略。例如,请参见:JPA/Hibernate 批量插入速度慢
查看优化器配置: https://vladmihalcea.com/hibernate-hidden-gem-the-pooled-lo-optimizer/
请注意,您的配置解析为:
SequenceHiLoGenerator在休眠 4 上SequenceStyleGenerator在 Hibernate 5 上,(它已hibernate.id.new_generator_mappings设置为 true)您不能使用身份生成器(请参阅使用身份标识符生成器时 Hibernate 禁用插入批处理)
表生成器不是性能最好的生成器(https://vladmihalcea.com/why-you-should-never-use-the-table-identifier-generator-with-jpa-and-hibernate/)
此外,请确保数量nextval()是实际问题。也许更改批量大小或语句顺序会有所帮助(请参阅https://vladmihalcea.com/how-to-batch-insert-and-update-statements-with-hibernate/)