MySQL: retrive eine große Auswahl von Stücken

8

Ich habe mit mehr ausgewählt als

  

70 Millionen Zeilen

Ich möchte die ausgewählten Daten in der großen csv-Datei auf win2012 R2 speichern

F: Wie kann ich die Daten von MySQL durch Chanks für eine bessere Leistung abrufen?

weil, wenn ich versuche, eine große Auswahl zu speichern, habe ich

  

Fehler wegen zu wenig Arbeitsspeichers

Danke für jede Hilfe!

    
Toren 09.12.2015, 13:49
quelle

1 Antwort

13

Sie könnten versuchen, die Funktion LIMIT zu verwenden. Wenn Sie dies tun:

%Vor%

Sie erhalten die ersten 1.000 Zeilen. Der erste LIMIT -Wert (0) definiert die Startzeile in der Ergebnismenge. Es ist null-indexiert, also bedeutet 0 "die erste Reihe". Der zweite LIMIT Wert ist die maximale Anzahl der abzurufenden Zeilen. Um die nächsten 1.000 Sätze zu erhalten, mach folgendes:

%Vor%

Und so weiter. Wenn SELECT keine Zeilen zurückgibt, sind Sie fertig.

Dies reicht jedoch nicht aus, da alle Änderungen, die während der Verarbeitung Ihrer 1K-Zeilen gleichzeitig an der Tabelle vorgenommen werden, die Reihenfolge verlassen. Um die Ergebnisse rechtzeitig einzufrieren, beginnen Sie mit der Abfrage der Ergebnisse in einer temporären Tabelle:

%Vor%

Randnotiz: Es ist eine gute Idee, sicherzustellen, dass die temporäre Tabelle nicht vorher existiert:

%Vor%

Sobald die temporäre Tabelle vorhanden ist, ziehen Sie auf jeden Fall die Zeilenblöcke von dort:

%Vor%

Ich überlasse es Ihnen, die Logik zu erstellen, die nach jedem Chunk den Grenzwert berechnet und nach dem Ende der Ergebnisse sucht. Ich würde auch viel größere Stücke als 1.000 Datensätze empfehlen; es ist nur eine Nummer, die ich aus der Luft ausgesucht habe.

Schließlich ist es eine gute Form, die temporäre Tabelle zu löschen, wenn Sie fertig sind:

%Vor%     
Ed Gibbs 09.12.2015, 14:12
quelle

Tags und Links