Optimieren des MySQL-Datenimports mithilfe von Load Data Infile
Das Importieren großer Datensätze in MySQL-Tabellen kann eine zeitaufwändige Aufgabe sein. Bei Verwendung des Befehls „Daten in Datei laden …“ kann es schwierig sein, Geschwindigkeit und Datenintegrität in Einklang zu bringen. In dieser Frage werden Möglichkeiten untersucht, die Leistung solcher Importe zu verbessern, insbesondere für Tabellen mit Schlüsseln.
Erhöhung der Importgeschwindigkeit
Das in der Frage erwähnte Hauptproblem ist die langsame Taste Erstellung nach Datenimport ohne Schlüssel. Um dieses Problem zu beheben:
-
Sortieren Sie die CSV-Datei: Ordnen Sie die Daten in der CSV-Datei in der Reihenfolge des Primärschlüssels der Tabelle an. Dies hilft Innodb, seine geclusterte Primärschlüsselstruktur für ein schnelleres Laden zu nutzen.
-
Einschränkungen deaktivieren: Deaktivieren Sie vorübergehend die Überprüfung eindeutiger und fremder Schlüssel, um den Overhead beim Laden zu reduzieren. Verwenden Sie die Befehle set unique_checks = 0; und setzen Sie Foreign_key_checks = 0;.
-
Binlogging deaktivieren:Binärprotokollierung deaktivieren (sql_log_bin=0; festlegen), um die Protokollierung zu umgehen und die Leistung zu verbessern.
-
Aufteilen Große Dateien: Teilen Sie große CSV-Dateien in kleinere Teile auf und laden Sie sie einzeln. Dies kann den Speicherverbrauch reduzieren und den Prozess beschleunigen.
Beschleunigung der Schlüsselerstellung
Nach dem Laden von Daten kann das Wiederherstellen der Schlüssel ein langwieriger Vorgang sein. Hier sind einige Vorschläge:
-
Masseneinfügung: Verwenden Sie die BULK INSERT-Klausel in der LOAD DATA INFILE-Anweisung, um Daten mit Schlüsseln auf einmal zu importieren.
-
Adaptiver Hash-Index: Aktivieren Sie den adaptiven Hash-Index (innodb_adaptive_hash_index=ON), um die Indexerstellung für häufig verwendete Abfragen zu beschleunigen.
-
Parallele Indizierung: Verwenden Sie nach Möglichkeit die parallele Indizierung (innodb_parallel_alter=ON), um mehrere Threads für die Indexerstellung zu erstellen, wodurch möglicherweise die benötigte Zeit reduziert wird.
Langsame Abfragen beenden
Um langsame Abfragen zu beenden, die weiterhin ausgeführt werden Beachten Sie nach der Beendigung Folgendes:
-
Verbinden erneut versuchen: Trennen Sie die Verbindung zum MySQL-Server und stellen Sie sie erneut her, um die Abfrage ordnungsgemäß zu beenden.
-
Abfrage-ID verwenden: Identifizieren Sie die ID der Abfrage mit SHOW PROCESSLIST und beenden Sie sie mit KILL [QUERY_ID].
-
MySQL neu starten: Als letzten Ausweg führt ein Neustart von MySQL dazu, dass alle laufenden Abfragen beendet werden. Es kann jedoch zu Dienstunterbrechungen kommen.
Das obige ist der detaillierte Inhalt vonWie optimiere ich den MySQL-Datenimport mithilfe von Load Data Infile für Tabellen mit Schlüsseln?. 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