sql >> Databáze >  >> RDS >> Oracle

hibernate.jdbc.fetch_size nebo @QueryHints(@javax.persistence.QueryHint(name=org.hibernate.fetchSize, value=10)) nefungují

výchozí velikost načtení v oracle je již 10 záznamů, takže je zvláštní, že při přidávání této nápovědy máte problémy s nedostatkem paměti. Zvláště pokud 100 000 nepředstavuje problém.

Některé věci, které bych udělal, abych určil problém a poskytl řešení:

Otestujte svůj kód naboso

Otestujte kód zodpovědný za vaše dotazy (pravděpodobně vaše DAO) s minimální režií. Mám podezření, že výjimka nedostatku paměti je pravděpodobně způsobena zpracováním výsledků databáze a nikoli skutečným dotazem + velikostí načtení.

Dočasně tedy změňte svůj kód tak, aby jednoduše provedl dotaz, ale neprovádějte na něm žádné mapování ani jiné zpracování. Jen se ujistěte, že je hotovo.

Pokud se zdá, že to „vyřeší“ váš problém, možná jste provedli nějaké změny na přijatých datech, která zahlcují vaši paměť.

Aktualizujte své závislosti

Pokud používáte maven (nebo gradle nebo jakýkoli jiný nástroj pro sestavení), navrhoval bych aktualizovat jakoukoli aktualizaci alespoň na nejnovější menší verzi (například 1.2.3 -> 1.2.9), což by nemělo nic narušit, ale mohlo by to opravit některé chyby.

Nepoužívejte náhodné velikosti načítání

Podívejte se na tyto odpovědi rozhodnout, jaká by mohla být pro vaši situaci dobrá velikost načítání.




  1. Jak zobrazit rozsah hodin

  2. mySQL se dvakrát připojí ke stejné tabulce

  3. Automaticky generované pořadové číslo začínající od 001 (POUZE PRO 3 ČÍSLICE) - PHP / MYSQL

  4. Rollback MySQL na enginu MyISAM