Spring boot 2 upgrade - весенняя загрузка данных jpa saveAll () очень медленная - PullRequest
0 голосов
/ 26 апреля 2018

Я использую mysql с hibernate и jpa загрузки данных весной (spring-boot-starter-data-jpa и mysql-connector-java). Недавно я обновил свой весенний загрузочный проект с 1.5 до 2.0. API источника данных CrudRepository для сохранения итерируемого изменил форму save () на saveAll (). Я внес изменения в код, и он работает, но он очень медленный:

  • вставить 10 пунктов -> в 2 раза медленнее (49 мс -> 95 мс)
  • вставьте 100 элементов -> в 6 раз медленнее (132 мс -> 840 мс)
  • вставьте 1000 элементов -> в 10 раз медленнее (792 мс -> 8028 мс)
  • вставить 10000 пунктов -> в 15 раз медленнее (4912 мс -> 73542 мс)
  • вставить 100000 элементов -> в 22 раза медленнее (32042мс -> 712702мс)

Я проверил вставки обеих пружинных версий с пустой таблицей. Версия сервера 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

Кто-нибудь знает, что изменилось с обновлением и как его снова ускорить?

1 Ответ

0 голосов
/ 08 августа 2019

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

hibernate:
  generate_statistics: true

https://www.baeldung.com/spring-data-jpa-batch-inserts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...