Я использую 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
Кто-нибудь знает, что изменилось с обновлением и как его снова ускорить?