Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

coldplay.xixi
coldplay.xixinach vorne
2020-12-21 17:43:293312Durchsuche

MySQL-TutorialSpalte führt in die Batch-SQL-Einfügung ein

Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

Empfohlen (kostenlos): MySQL-Tutorial

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.

Durch das Zusammenführen von SQL-Anweisungen kann auch die Anzahl der SQL-Anweisungsanalysen reduziert und die Netzwerkübertragungs-E/A reduziert werden.

Test- und Vergleichsdaten umfassen den Import eines einzelnen Datenelements und dessen Konvertierung in eine SQL-Anweisung für den Import.

  • Einfügungsverarbeitung in einer Transaktion
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. Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

Reduzieren Sie den Aufwand beim Erstellen von Transaktionen.

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;
    Da die Datenbank beim Einfügen Indexdaten verwalten muss, erhöhen unnötige Datensätze die Kosten für die Indexverwaltung.
  • Beziehen Sie sich auf den von InnoDB verwendeten B+Tree-Index. Wenn sich jeder eingefügte Datensatz am Ende des Index befindet, ist die Indexpositionierungseffizienz sehr hoch, und die Indexanpassung ist geringer Für den Index ist B+ erforderlich. Das Teilen und Zusammenführen des Baums verbraucht viele Rechenressourcen und die Indexpositionierungseffizienz der eingefügten Datensätze nimmt ab. Wenn die Datenmenge groß ist, kommt es zu häufigen Festplattenvorgängen.

Testvergleichsdaten, Leistungsvergleich von Zufallsdaten und sequentiellen Daten

Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

Löschen Sie zuerst den Index und erstellen Sie den Index neu, nachdem das Einfügen abgeschlossen ist

    Umfassender Leistungstest

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

Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

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.

Transaktionen müssen in ihrer Größe kontrolliert werden. Zu große Dinge können die Ausführungseffizienz beeinträchtigen. MySQL verfügt über das Konfigurationselement 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.

Detaillierte Erläuterung der Leistungsoptimierung der MySQL-Batch-SQL-Einfügung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen