我使用hibernate和spring boot data jpa(spring-boot-starter-data-jpa和mysql-connector-java)与mysql一起工作。最近,我将我的Spring Boot项目从1.5升级到2.0版本。Spring数据CrudRepository的API已更改,现在要使用saveAll()方法代替save()方法来保存可迭代数据。我在代码中进行了更改并运行,但速度非常慢:
- 插入10个项目->慢2倍(49ms->95ms) - 插入100个项目->慢6倍(132ms->840ms) - 插入1000个项目->慢10倍(792ms->8028ms) - 插入10000个项目->慢15倍(4912ms->73542ms) - 插入100000个项目->慢22倍(32042ms->712702ms)
我已经测试了两个Spring版本在空表上插入数据的情况。MySQL服务器版本没有更改:5.7.21 - MySQL Community Server(GPL)
我每天需要插入约2百万个项目,因此这种减速是非常严重的。这是我的配置:
有人知道更新后发生了什么变化以及如何再次加速吗?
- 插入10个项目->慢2倍(49ms->95ms) - 插入100个项目->慢6倍(132ms->840ms) - 插入1000个项目->慢10倍(792ms->8028ms) - 插入10000个项目->慢15倍(4912ms->73542ms) - 插入100000个项目->慢22倍(32042ms->712702ms)
我已经测试了两个Spring版本在空表上插入数据的情况。MySQL服务器版本没有更改:5.7.21 - MySQL Community Server(GPL)
我每天需要插入约2百万个项目,因此这种减速是非常严重的。这是我的配置:
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
有人知道更新后发生了什么变化以及如何再次加速吗?