У меня есть 3 класса сущностей с генератором IDENTITY (в идеале это не позволяет пакетную вставку / обновление)
Продукт ----- (отношение один ко многим) ---> ProductDetails --- h ( как отношение один ко многим) -> ProductMatDetails
Мой сценарий содержит всего 9000 строк, которые нужно вставить в три таблицы выше
Product -1 строка и ProductDetails -2500 строк и ProductMatDetails -6500 строк
productRepository.save(Product)
выполнение этой строки кода занимает около 5 минут.
вывод из трассировки гибернации до включения пакета:
o.h.e.i.StatisticalLoggingSessionEventListener - Session Metrics {
16494000 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
870876900 nanoseconds spent preparing 18413 JDBC statements;
317791325000 nanoseconds spent executing 18413 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
113381125700 nanoseconds spent executing 1 flushes (flushing a total of 11868 entities and 3020 collections);
0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
Примечание: я добавил ниже пакет конфигурация в application.yml
batch_size: 200
order_inserts: true
generate_statistics : true
order_updates: true
Выход после включения пакета:
o.h.e.i.StatisticalLoggingSessionEventListener - Session Metrics {
14273400 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
741319700 nanoseconds spent preparing 11819 JDBC statements;
185030780300 nanoseconds spent executing 11816 JDBC statements;
108944111600 nanoseconds spent executing 35 JDBC batches;
0 nanoseconds spent performing 0 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
109393797200 nanoseconds spent executing 1 flushes (flushing a total of 11873 entities and 3045 collections);
0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
Меня беспокоит
- Я слышал, как многие люди говорили, что пакетный режим отключен если класс сущности использует генератор IDENTITY, но в моем случае добавление нескольких конфигураций в файл application.yml активировал пакет, как я вижу в трассировке (не уверен, что на самом деле происходит пакетная вставка / обновление)
Я не вижу любой показ движение даже после добавления пакетной обработки
Предположим, что выполняется около 9000 операторов, но трассировка спящего режима показывает, что выполнено больше 11K операторов, чего мне не хватает
Если кто-нибудь может объяснить мне, как можно улучшить производительность. ??
Заранее спасибо