Heim >Datenbank >MySQL-Tutorial >Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung
MySQL-TutorialSpalte führt in die Batch-SQL-Einfügung ein
Empfohlen (kostenlos): MySQL-Tutorial
Durch das Zusammenführen von SQL-Anweisungen kann auch die Anzahl der SQL-Anweisungsanalysen reduziert und die Netzwerkübertragungs-E/A reduziert werden.Für einige Systeme mit großen Datenmengen zusätzlich zu den Problemen Angesichts der Datenbank ist die Abfrageeffizienz gering und die Datenspeicherzeit lang. Insbesondere bei Berichtssystemen kann der Zeitaufwand für den Datenimport mehrere Stunden oder mehr als zehn Stunden pro Tag betragen. Daher ist es sinnvoll, die Leistung beim Einfügen in die Datenbank zu optimieren. „Eine SQL-Anweisung fügt mehrere Datenelemente ein.“ Reduziert das Datenvolumen und die Häufigkeit der Protokolllöschung auf der Festplatte und verbessert so die Effizienz.
Test- und Vergleichsdaten umfassen den Import eines einzelnen Datenelements und dessen Konvertierung in eine SQL-Anweisung für den Import.
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);
Die Verwendung von Transaktionen kann die Effizienz der Dateneinfügung verbessern, da bei der Ausführung einer Einfügungsoperation intern eine Transaktion in MySQL eingerichtet und die tatsächliche Einfügung durchgeführt wird werden im Rahmen der Transaktionsverarbeitung durchgeführt.
Testen und vergleichen Sie die Daten. Der schriftliche Test ist in Nicht-Transaktions- und Transaktionsvorgänge unterteilt Geordnete Sortierung der eingefügten Datensätze nach dem Primärschlüssel
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);
START TRANSACTION;INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);...COMMIT;
Löschen Sie zuerst den Index und erstellen Sie den Index neu, nachdem das Einfügen abgeschlossen ist
Daten zusammenführen +Die Transaktionsmethode hat eine offensichtliche Leistungsverbesserung, wenn die Datenmenge groß ist. Dies liegt daran, dass die Datenmenge zu diesem Zeitpunkt die Kapazität von innodb_buffer übersteigt Jeder Positionierungsindex erfordert mehr Lese- und Schreibvorgänge auf der Festplatte, wodurch die Leistung schnell abnimmt. Die kombinierte Daten + Transaktion + geordnete Methode funktioniert immer noch gut, wenn das Datenvolumen mehrere zehn Millionen erreicht. Wenn das Datenvolumen groß ist, ist die Positionierung des geordneten Datenindex bequemer und erfordert keine häufigen Lese- und Schreibvorgänge auf der Festplatte. Es kann höher beibehalten werden
Hinweise
Beim Zusammenführen von Daten darf die SQL-Längenbeschränkung im selben SQL nicht überschritten werden. Sie kann über den geändert werden max_allowed_packet
-Konfiguration. Der Standardwert ist 1M
, der während des Tests auf 8M
geändert werden kann.
innodb_log_buffer_size
. Wenn dieser Wert überschritten wird, werden die Innodb-Daten auf die Festplatte geleert. Ein besserer Ansatz besteht daher darin, die Transaktionsfestschreibung durchzuführen, bevor die Daten diesen Wert erreichen. Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!