Frage
Wie kann beim Übergang von Microsoft SQL Server zu MySQL eine Massenkopie durchgeführt werden? Kann das Kopieren von Datentabellen ohne Leistungseinbußen erreicht werden?
Antwort
Obwohl es intuitiv erscheinen mag, das Schreiben in eine CSV-Datei vor dem Einfügen von Daten zu vermeiden, deuten Leistungsbenchmarks auf etwas anderes hin. Die Verwendung der MySqlBulkLoader-Klasse zum Massenladen von Daten aus einer CSV-Datei übertrifft direkte Einfügungen mit einem MySqlDataAdapter deutlich.
Implementierung:
<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv"; using (StreamWriter writer = new StreamWriter(tempCsvFileSpec)) { Rfc4180Writer.WriteDataTable(rawData, writer, false); } var msbl = new MySqlBulkLoader(conn); msbl.TableName = "testtable"; msbl.FileName = tempCsvFileSpec; msbl.FieldTerminator = ","; msbl.FieldQuotationCharacter = '"'; msbl.Load(); System.IO.File.Delete(tempCsvFileSpec);</code>
Dieser Code speichert die DataTable in eine temporäre CSV-Datei, lädt die Daten in großen Mengen und löscht dann die Datei. Benchmarking zeigt, dass dieser Ansatz nur 5–6 Sekunden dauert, einschließlich der Zeit für Datei-E/A-Vorgänge. Im Gegensatz dazu dauern direkte Einfügungen mit MySqlDataAdapter etwa 30 Sekunden.
Das obige ist der detaillierte Inhalt vonWie kann in MySQL ein Massenkopieren von Datentabellen unter Beibehaltung der Leistung erreicht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!