我使用spring boot和spring数据jpa与hibernate,japrepository.save(List)花了20分钟将8000条记录保存到oracle数据库。有人可以帮助我解决它。在application.properties中添加spring.jpa.properties.hibernate.jdbc.batch_size = 1000也没有帮助。
application.properties server.servlet-path = / * spring.datasource.jndi-name = jdbc / mydatasource spring.datasource.testWhileIdle = true spring.datasource.validationQuery = SELECT 1 spring.jpa.database-platform = org。 hibernate.dialect.Oracle10g方言spring.jpa.properties.hibernate.jdbc.batch_size = 1000
答案 0 :(得分:2)
问题可能是序列的allocationSize,因为对于每个插入,它将获得一个昂贵的操作的新序列号。
如果您可以将allocationSize设置为适合您案例的更高值。
答案 1 :(得分:0)
尝试使用合理的batch_size,如50或30.除此之外,尝试设置参数
spring.jpa.hibernate.order_inserts=true
spring.jpa.hibernate.order_updates=true
因此,在发送到数据库之前,会对插入和更新进行排序。另请查看此处Spring Boot JPA Bulk insert或https://memorynotfound.com/hibernate-jpa-batch-insert-batch-update-example/
有关更多示例和详细信息。