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

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

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

22 ответов

50 просмотров

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, чем синхронные.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта