169 похожих чатов

Подскажите пожалуйста, пытаюсь через @Query подтянуть 120000 сущностей. Долго ли

Spring Data Jpa он будет их мапить? У меня почему то довольно долго выходит именно маппинг, сам запрос в БД отрабатывает быстро. Еще почему то он порциями limit тащит все

22 ответов

14 просмотров

N+1?

Ебу-Казино Автор вопроса
+7908
N+1?

не, fetch join

Долго это скок?

Ебу Казино
не, fetch join

Но он делает лимит, хотя в квери лимита нет?

Ебу-Казино Автор вопроса

5 минут, потом shutdown, но 5 минут это очень долго. Сам в бд запрос отрабатывает за 3-7 сек

Лимит это батчинг По хорошему тебе надо стримить, т.е. взять Stream<Entity> Но в целом, jpa не очень подходит под такую задачу

Ебу Казино
5 минут, потом shutdown, но 5 минут это очень долг...

Как минимум делай транзакцию readOnly или хинтом в JPA, должно немного помочь.

Ебу-Казино Автор вопроса
Ебу Казино
не, тогда бы с Exception падал

А ты локально запускаешь?

Ебу Казино
не, тогда бы с Exception падал

Еще может быть мусорщик пытается почистить неудачно и делает stw

Ебу Казино
да

120к объектов в кеше сессии это не хорошо

Artem Mezhelovsky
Мб в хип не может все уместить?

типовая рекомендация тут - это readOnly + Stream + процессить энтити по-одной и детачить из сессии сразу как вытащил из стрима

Artem Mezhelovsky
А как стрим помогает?

емнип, там в базе открывается курсор, и jpa потихоньку тянет с этого курсора строки по мере необходимости в сумме с детачем, это даёт константное и небольшое потребление памяти

Anton U
емнип, там в базе открывается курсор, и jpa потихо...

О, а как это работает. Там же под капотом обычный jdbc выходит что мы получаем resultset и затем делаем next каждый раз чтобы получить строку. И выходит что мы каждый раз двигаем курсор и ходим по сети до Бд?

Вроде того, но по факту это происходит батчами, он не по одной строке читает конечно. Для базы это не очень оптимально на самом деле, но на стороне джавы это лучше, так как можно свести кол-во объектов в гиберском кэше к минимуму.

Artem Mezhelovsky
А если реактивный драйвер юзать?

Подвезли реактивный драйвер для гибернейта? Емнип, реактивные jdbc, которые есть, медленнее в плане throughput, чем синхронные.

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта