Beispiel zur Optimierung der MySQL-Einfügeleistung

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung

Die MySQL-Leistungsoptimierung besteht darin, MySQL durch sinnvolle Anordnung der Ressourcen und Anpassung der Systemparameter schneller auszuführen und mehr Ressourcen zu sparen. Zur MySQL-Leistungsoptimierung gehören die Optimierung der Abfragegeschwindigkeit, die Optimierung der Aktualisierungsgeschwindigkeit, die Optimierung des MySQL-Servers usw. In diesem Blog werden drei Aspekte vorgestellt: Abfrageoptimierung, Datenbankstrukturoptimierung und MySQL-Serveroptimierung.

Bei der Optimierung von MySQL-Datenbanken geht es einerseits darum, Systemengpässe zu identifizieren und die Gesamtleistung der MySQL-Datenbank zu verbessern. Andererseits erfordert sie eine angemessene Strukturgestaltung und Parameteranpassung, um die Reaktionsgeschwindigkeit bei Benutzervorgängen zu verbessern. Gleichzeitig ist es auch notwendig, möglichst viele Systemressourcen einzusparen, damit das System Dienste mit höherer Auslastung bereitstellen kann. Beispielsweise kann durch die Optimierung des Dateisystems die Lese- und Schreibleistung der Festplatten-E/A verbessert werden. Durch die Optimierung der Planungsstrategie des Betriebssystems kann die Ladekapazität von MySQL bei hoher Belastung verbessert werden. Durch die Optimierung der Tabellenstruktur, des Index, der Abfrageanweisungen usw. können die Abfrageantworten schneller erfolgen.

Syntax der MySQL-Insert-Anweisung und eine Einführung in die Optimierung der MySQL-Insert-Leistung.

einfügen in `Tabelle`(`Feld1`,`Feld2`) Werte('Wert1','Wert2');

Methoden zur Verbesserung der Einfügeleistung

1. Mehrere Datensätze in eine SQL-Anweisung einfügen

INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1);

Kann geschrieben werden als

INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1);

2. Transaktionen nutzen

TRANSAKTION STARTEN; 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); 
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1); 
... 
BEGEHEN;

Beachten

1. Die Länge von SQL-Anweisungen ist begrenzt. Seien Sie daher beim Zusammenführen von SQL-Anweisungen vorsichtig. Die Längenbeschränkung kann über das Konfigurationselement „max_allowed_packet“ geändert werden. Der Standardwert ist 1 M.

2. Eine zu große Transaktion beeinträchtigt die Ausführungseffizienz. MySQL verfügt über ein Konfigurationselement innodb_log_buffer_size. Wenn dieser Wert überschritten wird, werden Festplattendaten verwendet, was die Ausführungseffizienz beeinträchtigt.

Beschreibung der Transaktionskonfigurationselemente:

innodb_buffer_pool_size

Wenn Sie Innodb verwenden, ist dies eine wichtige Variable. Im Vergleich zu MyISAM reagiert Innodb empfindlicher auf die Puffergröße. MySIAM kommt bei großen Datenmengen möglicherweise mit der standardmäßigen key_buffer_size gut zurecht, aber bei Innodb scheint der Standardwert bei großen Datenmengen zu steigen. Der Pufferpool von Innodb speichert Daten und Indizes im Cache, sodass kein Platz für den Systemcache freigelassen werden muss. Wenn Sie nur Innodb verwenden, können Sie diesen Wert auf 70 bis 80 % des Speichers festlegen. Ähnlich wie bei key_buffer gilt: Wenn die Datenmenge klein ist und nicht stark ansteigt, kann es die Speichernutzung verbessern, diesen Wert nicht zu hoch einzustellen.

innodb_additional_pool_size

Die Auswirkungen hiervon sind nicht sehr spürbar, zumindest nicht, wenn das Betriebssystem in der Lage ist, den Speicher ordnungsgemäß zuzuordnen. Sie müssen den Wert jedoch möglicherweise dennoch auf 20 MB oder mehr einstellen, um zu sehen, wie viel Speicher Innodb für andere Zwecke zuweist.

innodb_log_file_size

Dies ist besonders wichtig, wenn viele Daten, insbesondere große Datenmengen, geschrieben werden. Beachten Sie, dass größere Dateien eine bessere Leistung bieten, die Wiederherstellung der Datenbank jedoch länger dauert. Normalerweise verwende ich 64–512 M, je nach Speicherplatz auf dem Server.

innodb_log_buffer_size

Der Standardwert ist für die meisten Anwendungen mit mittleren Schreibvorgängen und kurzen Transaktionen ausreichend. Wenn Sie häufige Aktualisierungen vornehmen oder viele Blob-Daten verwenden, sollten Sie diesen Wert erhöhen. Ist der Wert jedoch zu groß, wird Speicher verschwendet, da einmal pro Sekunde ein „Flush“ (wie sagt man das auf Chinesisch?) erfolgt. Es besteht also keine Notwendigkeit, den Wert auf mehr als 1 Sekunde einzustellen. 8–16 M sollten im Allgemeinen ausreichen. Kleine Anwendungen können kleiner eingestellt werden.

innodb_flush_log_at_trx_commit

Beschweren Sie sich, dass Innodb 100-mal langsamer ist als MyISAM? Dann haben Sie wahrscheinlich vergessen, diesen Wert anzupassen. Der Standardwert 1 bedeutet, dass bei jedem Transaktions-Commit oder jeder Anweisung außerhalb einer Transaktion das Protokoll auf die Festplatte geschrieben werden muss, was sehr zeitaufwändig ist. Dies gilt insbesondere bei Verwendung eines batteriegestützten Cache. Für viele Anwendungen ist die Einstellung auf 2 kein Problem, insbesondere bei der Übertragung von MyISAM-Tabellen. Dies bedeutet, dass die Daten nicht auf die Festplatte, sondern in den Systemcache geschrieben werden. Das Protokoll wird weiterhin jede Sekunde auf die Festplatte geschrieben, sodass im Allgemeinen nicht mehr als 1–2 Sekunden an Aktualisierungen verloren gehen. Das Setzen auf 0 ist schneller, aber weniger sicher, und selbst wenn MySQL abstürzt, können Transaktionsdaten verloren gehen. Bei einem Wert von 2 kann es nur dann zu Datenverlust kommen, wenn das gesamte Betriebssystem abstürzt.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Erläuterung des MySQL-Einfügeanweisungsvorgangs am Beispiel
  • MySQL-Operationsübersicht INSERT und REPLACE
  • So verschachteln Sie Insert und Select in MySQL
  • Korrekte Verwendung der MySQL INSERT INTO-Anweisung
  • MySQL-Tipps - LAST_INSERT_ID
  • Tutorial zur Verwendung und Optimierung von Insert-Anweisungen in MySQL
  • 3 Tipps für MySql-Einfügevorgänge
  • Analyse langsamer Einfügefälle aufgrund großer Transaktionen in MySQL

<<:  Docker-Container vom Einstieg bis zur Obsession (empfohlen)

>>:  JS verwendet die Methode „reduce()“, um Baumstrukturdaten zu verarbeiten

Artikel empfehlen

Detaillierte Diskussion zum Thema mysqldump-Datenexport

1. Bei der Verwendung von mysqldump wird ein Fehl...

Das WeChat-Applet verwendet die Videoplayer-Videokomponente

In diesem Artikelbeispiel wird der spezifische Co...

Implementierung eines Bootstrap-Webseiten-Layoutrasters

Inhaltsverzeichnis 1. So funktioniert das Bootstr...

Detaillierte Erklärung der CSS-Float-Eigenschaft

1. Was ist Floating? Floaten bedeutet, wie der Na...

So schreiben Sie den Einführungsinhalt der Infoseite der Website

Alle Websites, ob offiziell, E-Commerce, soziale ...

Tutorial zum Herunterladen und Installieren von XFTP (grafisches Tutorial)

Wenn Sie Dateien zwischen Windows und Linux übert...

Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp

Detaillierte Erklärung der Verwendung von DECIMAL...

Einführung in die neuen Funktionen von MySQL 8.0.11

MySQL 8.0 für Windows v8.0.11 offizielle kostenlo...

Detaillierte Erklärung zur Verwendung von Join in Mysql

In den vorherigen Kapiteln haben wir gelernt, wie...

Wird der Index durch MySQL ungültig?

Wird MySQLs IN den Index ungültig machen? Gewohnh...

Detaillierte Erklärung zum Anpassen des Linux-Befehlsverlaufs

Der Befehl „Bash History“ im Linux-System hilft d...