Heim >Datenbank >MySQL-Tutorial >Warum sind MySQL-InnoDB-Einfügungen so viel langsamer als MyISAM-Einfügungen?
Das Problem:
Beim Einfügen großer Zufallszahlen als Schlüssel In eine Tabelle weist MySQL InnoDB im Vergleich zu MyISAM deutlich langsamere Einfügegeschwindigkeiten auf. Beispielsweise dauert das Einfügen von 1 Million Zeilen in eine Tabelle mit 10 Millionen Zeilen 6 Sekunden mit MyISAM, aber 3433 Sekunden mit InnoDB.
Die Ursache:
Der Hauptgrund dafür Diese Ungleichheit liegt im Transaktionsunterstützungsmechanismus von InnoDB. Im Gegensatz zu MyISAM, das Daten ohne Zwischenpufferung direkt auf der Festplatte speichert, führt InnoDB für jede Einfügeanweisung einen Log-Flush auf die Festplatte durch. Dieses Commit-on-each-Statement-Verhalten wirkt sich erheblich auf die Leistung aus.
Die Lösung:
Um die Einfügungsgeschwindigkeit von InnoDB zu optimieren, wird empfohlen, explizite Transaktionen zu verwenden. Indem Sie die Einfügeanweisungen innerhalb einer Transaktion kapseln, können Sie den Festschreibungsvorgang verschieben, bis alle Anweisungen ausgeführt sind. Dieser Ansatz reduziert die Anzahl der erforderlichen Festplattenspülungen erheblich und erhöht dadurch die Einfügegeschwindigkeit.
Um diese Lösung anzuwenden, führen Sie die folgenden Befehle vor und nach Ihrer Einfügeschleife aus:
Vor dem Einfügen Schleife:
START TRANSACTION;
Nach dem Einfügen Schleife:
COMMIT;
Durch die Implementierung dieser Technik können Sie die Einfügungsleistung von InnoDB erheblich beschleunigen und vergleichbare Geschwindigkeiten wie MyISAM erzielen, während Sie dennoch von der Transaktionsunterstützung und den Datenintegritätsfunktionen von InnoDB profitieren.
Das obige ist der detaillierte Inhalt vonWarum sind MySQL-InnoDB-Einfügungen so viel langsamer als MyISAM-Einfügungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!