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

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

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

22 ответов

54 просмотра

N+1?

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

не, fetch join

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

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

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

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

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

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

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

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

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

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

Ебу Казино
да

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

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

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта