Heim > Datenbank > MySQL-Tutorial > Wie kann ich mit Hibernate 90 Millionen Datensätze effizient streamen und dabei OutOfMemoryErrors vermeiden?

Wie kann ich mit Hibernate 90 Millionen Datensätze effizient streamen und dabei OutOfMemoryErrors vermeiden?

Linda Hamilton
Freigeben: 2024-12-04 07:36:13
Original
122 Leute haben es durchsucht

How Can I Efficiently Stream 90 Million Records with Hibernate, Avoiding OutOfMemoryErrors?

90 Millionen Datensätze mit Hibernates Limited ScrollableResults streamen

Trotz seines Namens ist Hibernates ScrollableResults nicht für die effiziente Verarbeitung großer Ergebnismengen geeignet. Wie ein Benutzer festgestellt hat, führt der Versuch, es mit 90 Millionen Datensätzen zu verwenden, zu einem OutOfMemoryError, da der Treiber den gesamten Ergebnissatz in den Speicher lädt.

Die Alternative setFirstResult und setMaxResults ist auch für große Datensätze unpraktisch auf die Zeit, die benötigt wird, um höhere Offsets zu erreichen.

Eine Lösung besteht darin, Datensätze manuell mithilfe von SQL-Abfragen abzurufen. Durch die Angabe einer Bedingung für den Primärschlüssel und die Begrenzung der Anzahl der zurückgegebenen Datensätze können Datenblöcke gestreamt werden, ohne den Speicher zu überlasten.

Ein anderer Ansatz besteht darin, die setFirstResult/setMaxResults-Strategie zu ändern. Anstatt den Offset schrittweise zu erhöhen, kann man den maximalen Primärschlüsselwert des vorherigen Stapels verwenden, um den nächsten Stapel abzurufen. Diese Methode ist besonders effektiv, wenn die Tabelle nach dem Primärschlüssel geordnet ist und zusätzliche Bedingungen Gleichheitsvergleiche verwenden, die auf die letzte indizierte Spalte beschränkt sind.

Durch Befolgen dieser Strategien kann man die Einschränkungen der ScrollableResults von Hibernate umgehen und effizient verarbeiten große Datensätze im Streaming-Modus.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Hibernate 90 Millionen Datensätze effizient streamen und dabei OutOfMemoryErrors vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage