Oracle
 sql >> Datenbank >  >> RDS >> Oracle

hibernate.jdbc.fetch_size oder @QueryHints(@javax.persistence.QueryHint(name=org.hibernate.fetchSize, value=10)) funktionieren nicht

Die Standardabrufgröße in Oracle ist bereits 10 Datensätze, daher ist es seltsam, dass Sie beim Hinzufügen dieses Hinweises Probleme mit dem Arbeitsspeicher haben. Vor allem, wenn 100000 kein Problem darstellen.

Einige Dinge, die ich tun würde, um das Problem zu lokalisieren und eine Lösung bereitzustellen:

Barebone-Test Ihres Codes

Testen Sie den für Ihre Abfragen verantwortlichen Code (wahrscheinlich Ihr DAO) mit minimalem Overhead. Ich vermute, dass die Ausnahme zu wenig Arbeitsspeicher eher auf die Verarbeitung der Datenbankergebnisse und nicht auf die tatsächliche Abfrage + Fetchsize zurückzuführen ist.

Ändern Sie also vorübergehend Ihren Code, um die Abfrage einfach auszuführen, aber führen Sie keine Zuordnung oder andere Verarbeitung durch. Stellen Sie nur sicher, dass es fertig ist.

Wenn dies Ihr Problem zu "beheben" scheint, haben Sie möglicherweise einige an den Daten, die Sie erhalten, durchgeführt, die Ihr Gedächtnis überschwemmen.

Aktualisieren Sie Ihre Abhängigkeiten

Wenn Sie Maven (oder Gradle oder ein anderes Build-Tool) verwenden, würde ich vorschlagen, jedes Update mindestens auf die neueste Nebenversion (z. B. 1.2.3 -> 1.2.9) zu aktualisieren. Dies sollte nichts beschädigen, aber möglicherweise einige Fehler beheben.

Wählen Sie die Abrufgrößen nicht zufällig aus

Sehen Sie sich diese Antworten um zu entscheiden, was eine gute Fetch-Größe für Ihre Situation sein könnte.