Heim  >  Artikel  >  Datenbank  >  Wie kann in MySQL ein Massenkopieren von Datentabellen unter Beibehaltung der Leistung erreicht werden?

Wie kann in MySQL ein Massenkopieren von Datentabellen unter Beibehaltung der Leistung erreicht werden?

DDD
DDDOriginal
2024-10-24 06:14:02839Durchsuche

How Can Bulk Copying of DataTables Be Achieved in MySQL While Maintaining Performance?

Verwenden von MySQLBulkLoader zum Massenkopieren einer Datentabelle

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!

Stellungnahme:
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