Heim >Datenbank >MySQL-Tutorial >Wie kann ich die MySQL LOAD DATA INFILE-Leistung für große Datenimporte optimieren?

Wie kann ich die MySQL LOAD DATA INFILE-Leistung für große Datenimporte optimieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-07 19:01:02228Durchsuche

How Can I Optimize MySQL LOAD DATA INFILE Performance for Large Data Imports?

Optimieren der Leistung von MySQL LOAD DATA INFILE

Beim Importieren großer Datenmengen in MySQL-Tabellen mit dem Befehl LOAD DATA INFILE kann die Leistung beeinträchtigt werden erhebliche Sorge. Eine Herausforderung dabei ist der Kompromiss zwischen dem Import ohne Schlüssel, der zu einem schnelleren Laden der Daten, aber einer langsameren Schlüsselerstellung führen kann, und dem Import mit Schlüsseln, der den Importvorgang verlangsamt. Hier sind einige Strategien, um den Import zu beschleunigen:

Daten nach Primärschlüssel ordnen:

Bevor Sie die Daten laden, sortieren Sie Ihre CSV-Datei entsprechend der Primärschlüsselreihenfolge des Zieltabelle. Dies ist besonders bei der Verwendung von InnoDB von Vorteil, da gruppierte Primärschlüssel verwendet werden, was bedeutet, dass Daten beim Sortieren schneller geladen werden.

Einschränkungen deaktivieren:

Eindeutige und fremde Schlüssel vorübergehend deaktivieren Schlüsseleinschränkungen (set unique_checks = 0; set Foreign_key_checks = 0;), um die Importgeschwindigkeit zu verbessern. Sobald die Daten geladen sind, können Sie diese Einschränkungen wieder aktivieren (unique_checks = 1 festlegen; Foreign_key_checks = 1 festlegen;).

Binäre Protokollierung deaktivieren:

Binäre Protokollierung deaktivieren (set sql_log_bin=0;) kann auch die Importzeiten verlängern. Wenn diese Option aktiviert ist, protokolliert MySQL alle Schreibabfragen zu Replikationszwecken im Binärprotokoll. Durch die Deaktivierung werden Ressourcen freigegeben, die zum Laden von Daten verwendet werden können.

Tabelle abschneiden:

Vor dem Laden von Daten kürzen Sie die Zieltabelle, um alle vorhandenen Zeilen zu entfernen (abschneiden < ;Tabelle>;). Dadurch wird sichergestellt, dass es sich bei den Daten, die Sie importieren, um die einzigen Daten in der Tabelle handelt.

CSV-Datei aufteilen:

Wenn Ihre CSV-Datei sehr groß ist, sollten Sie sie aufteilen kleinere Stücke. Dadurch kann MySQL die Daten in kleineren Stapeln laden und so die für jeden Ladevorgang erforderliche Zeit reduzieren.

Langsame Abfragen beenden:

Um eine langsame Abfrage zu beenden, ohne MySQL neu zu starten , verwenden Sie den Befehl KILL QUERY. Dieser Befehl kann über die MySQL-Befehlszeile oder mit einem Tool wie phpMyAdmin ausgeführt werden.

Zusätzliche Tipps:

  • Verwenden Sie die Option REPLACE oder INSERT IGNORE, um dies zu vermeiden Fehler durch doppelte Schlüssel.
  • Verwenden Sie das Schlüsselwort LOCAL, um zu verhindern, dass bei jedem Import temporäre Tabellen erstellt werden.
  • Verwenden Sie einen Hochleistungsserver mit ausreichend RAM- und CPU-Ressourcen.

Das obige ist der detaillierte Inhalt vonWie kann ich die MySQL LOAD DATA INFILE-Leistung für große Datenimporte optimieren?. 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