Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine ultraschnelle Masseneinfügung von Zeilen in MySQL erreichen?

Wie kann ich eine ultraschnelle Masseneinfügung von Zeilen in MySQL erreichen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-24 20:19:14719Durchsuche

How Can I Achieve Ultra-Fast Bulk Insertion of Rows into MySQL?

MySQL-Zeileneinfügung optimieren: Ultraschnelle Masseneinfügung erreichen

In diesem Artikel befassen wir uns mit der Notwendigkeit einer effizienten Zeileneinfügung in MySQL Datenbank. Wir präsentieren eine optimierte Lösung, die die Einfügezeit drastisch verkürzt und die Gesamtleistung der Datenbank verbessert.

Hintergrund

Viele Entwickler stoßen beim Einfügen großer Datenmengen in MySQL auf Leistungsengpässe. Während schleifenbasierte Ansätze mit einzelnen SQL-Anweisungen funktionieren, können sie ineffizient und langsam sein.

Problemstellung

Im bereitgestellten Beispiel dauert der schleifenbasierte Code Das Einfügen von 100.000 Zeilen in eine MySQL-Datenbank dauert 40 Sekunden, was die Notwendigkeit einer effizienteren Lösung unterstreicht Ansatz.

Lösung

Wir ersetzen den schleifenbasierten Ansatz durch eine Masseneinfügungstechnik mit einem StringBuilder, um eine einzelne SQL-Anweisung zu erstellen, die mehrere Zeilen enthält, die gleichzeitig eingefügt werden sollen . Durch die Verwendung dieses Ansatzes erzielen wir erhebliche Leistungsverbesserungen.

Beispielcode

Der optimierte Code wird unten bereitgestellt:

public static void BulkToMySQL()
{
    string ConnectionString = "server=192.168.1xxx";
    StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES ");           
    using (MySqlConnection mConnection = new MySqlConnection(ConnectionString))
    {
        List<string> Rows = new List<string>();
        for (int i = 0; i < 100000; i++)
        {
            Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test")));
        }
        sCommand.Append(string.Join(",", Rows));
        sCommand.Append(";");
        mConnection.Open();
        using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
        {
            myCmd.CommandType = CommandType.Text;
            myCmd.ExecuteNonQuery();
        }
    }
}

Ergebnisse

Bei Verwendung des Masseneinfügungsansatzes beträgt die Einfügungszeit 100.000 Zeilen sinkt von 40 Sekunden auf nur noch 3 Sekunden, was eine bemerkenswerte Leistungsverbesserung von 93 % darstellt.

Zusätzliche Überlegungen

  1. Sicherheit: Wir haben MySqlHelper.EscapeString hinzugefügt, um Code zu verhindern Injektion.
  2. Optimierung:Sie können die Leistung weiter optimieren, indem Sie die Batchgröße anpassen und Datenbankindizes optimieren.

Fazit

Durch die Implementierung dieser Masseneinfügungstechnik können Entwickler die Effizienz ihrer Einfügungsvorgänge in MySQL-Datenbanken erheblich steigern. Diese Methode verkürzt die Einfügezeit, verbessert die Gesamtleistung und gewährleistet die Datenintegrität mit der zusätzlichen Sicherheitsmaßnahme.

Das obige ist der detaillierte Inhalt vonWie kann ich eine ultraschnelle Masseneinfügung von Zeilen in MySQL erreichen?. 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