java jpa saveall方法优化,Spring Boot 2升级-Spring Boot数据JPA saveAll()非常慢

I use mysql with hibernate and spring boot data jpa (spring-boot-starter-data-jpa and mysql-connector-java). Recently I upgraded my spring boot project from 1.5 to 2.0. The API of the spring data CrudRepository to save an iterable has changed form save() to saveAll(). I made the changes in the code and it works but it is very slow:

insert 10 items -> 2 times slower (49ms -> 95ms)

insert 100 items -> 6 times slower (132ms -> 840ms)

insert 1000 items -> 10 times slower (792ms -> 8028ms)

insert 10000 items -> 15 times slower (4912ms -> 73542ms)

insert 100000 items -> 22 times slower (32042ms -> 712702ms)

I have tested the inserts of both spring versions with an empty table. The mysql server version hasn't change: 5.7.21 - MySQL Community Server (GPL)

I need to insert ~2M items daily so this slowdown is dramatically. This is my configuration:

spring.datasource.url = jdbc:mysql://localhost:3306/service?useSSL=false&rewriteBatchedStatements=true

spring.datasource.username = service

spring.datasource.password = service

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.hikari.maximum-pool-size=5

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

spring.jpa.properties.hibernate.jdbc.batch_size=50

spring.jpa.properties.hibernate.order_inserts=true

spring.jpa.properties.hibernate.order_updates=true

spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true

Does anybody know what changed with the update and how to speed it up again?

解决方案

in application.properties set spring.jpa.properties.hibernate.generate_statistics = true

hibernate:

generate_statistics: true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值