Heim > Datenbank > MySQL-Tutorial > Warum sind MySQL-InnoDB-Einfügungen so viel langsamer als MyISAM-Einfügungen?

Warum sind MySQL-InnoDB-Einfügungen so viel langsamer als MyISAM-Einfügungen?

DDD
Freigeben: 2024-12-06 09:35:11
Original
729 Leute haben es durchsucht

Why Are MySQL InnoDB Inserts So Much Slower Than MyISAM Inserts?

Warum MySQL InnoDB-Einfügungen deutlich langsamer sind 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 Login kopieren

Nach dem Einfügen Schleife:

COMMIT;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage