Oracle
 sql >> Baza danych >  >> RDS >> Oracle

hibernate.jdbc.fetch_size lub @QueryHints(@javax.persistence.QueryHint(name=org.hibernate.fetchSize, value=10)) nie działa

domyślny rozmiar pobierania w Oracle to już 10 rekordów, więc dziwne, że podczas dodawania tej wskazówki masz problemy z brakiem pamięci. Zwłaszcza jeśli 100000 nie stanowi problemu.

Kilka rzeczy, które chciałbym zrobić, aby wskazać problem i znaleźć rozwiązanie:

Przetestuj kod w wersji szkieletowej

Przetestuj kod odpowiedzialny za Twoje zapytania (prawdopodobnie Twoje DAO) z minimalnym obciążeniem. Podejrzewam, że wyjątek braku pamięci jest bardziej prawdopodobny z powodu przetwarzania wyników bazy danych, a nie rzeczywistego zapytania + fetchsize.

Tak więc tymczasowo zmień swój kod, aby po prostu wykonać zapytanie, ale nie rób na nim żadnego mapowania ani innego przetwarzania. Po prostu upewnij się, że jest zrobione.

Jeśli wydaje się, że to „rozwiąże” Twój problem, możesz wykonać pewne czynności na otrzymanych danych, które zalewają Twoją pamięć.

Zaktualizuj swoje zależności

Jeśli używasz maven (lub gradle lub innego narzędzia do budowania) sugeruję aktualizację każdej aktualizacji co najmniej do najnowszej wersji pomocniczej (na przykład 1.2.3 -> 1.2.9), nie powinno to niczego zepsuć, ale może napraw kilka błędów.

Nie wybieraj losowych rozmiarów pobierania

Sprawdź te odpowiedzi aby zdecydować, jaki może być dobry rozmiar pobierania w Twojej sytuacji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT z tabeli z listą Varying IN w klauzuli WHERE

  2. Błąd składni w instrukcji SQL słowo kluczowe „WITH” zgłaszające wyjątek

  3. SQL Wiersze do kolumn

  4. Jak napisać java.sql.Array do java.sql.SQLOutput w SQLData.writeSQL() dla Oracle

  5. Jak mogę uzyskać wartość CDATA z xml?