Wie zu vermeiden, OOM (Out of memory) Fehler beim abrufen aller Datensätze einer großen Tabelle?

Ich bin da eine Aufgabe zum konvertieren einer riesigen Tabelle, um benutzerdefinierte XML-Datei. Ich werde mich mit Java für diesen job.

Wenn ich einfach einen "SELECT * FROM Kunden", kann es Rückkehr die riesige Menge von Daten, die schließlich zu OOM. Ich Frage mich, gibt es eine Möglichkeit, die ich wählen, wird der Datensatz sofort, sobald es verfügbar ist, und entfernen Sie den Eintrag aus dem Speicher nach, während sql abrufen Prozess?

--- bearbeitet am 13 Jul 2009

Ich möchte meine Frage. Ich habe 1 db server und 1 application-server.
Wenn ich die Ausgabe einer select-Abfrage in einer Anwendung, die Daten reist von einem db-server app-server.

Glaube ich (korrigiert mich wenn ich falsch Liege) ResultSet müssen warten, bis alle mit dem Empfang der Datensätze in der Abfrage. Auch wenn wir-fetch-Größe 4, für eine 1000-Datensatz-Tabelle, die wir noch am Ende mit 1000 Datensätze, die im heap-Speicher des app-server, ist es richtig? - Fetch-Größe, beeinflussen nur die Anzahl der hin-und Rückfahrt vom/zum db-server.

Meine Frage ist, wie zu Beginn der Verarbeitung auf, dass 4 (oder beliebig viele) Datensätze sofort nach der Ankunft in app-server, und entsorgen Sie Sie, um Speicherplatz freizugeben in-app-server?

InformationsquelleAutor der Frage janetsmith | 2009-07-10

Schreibe einen Kommentar