Lösung für das Problem, dass MySQL Daten sehr langsam löscht und einfügt

Lösung für das Problem, dass MySQL Daten sehr langsam löscht und einfügt

Wenn ein Unternehmensentwickler eine Insert-Anweisung in einer Testumgebung ausführt, dauert es mehr als 10 Sekunden, bis sie erfolgreich ausgeführt wird. Wir haben die Datenbankleistung, das Datenvolumen, Deadlocks und andere Informationen der Testumgebung überprüft und keine Anomalien festgestellt. Schließlich wurde dieses Problem durch eine Änderung der Methode zum Schreiben des Protokolls gelöst.

1. Änderungsmethode

Ändern Sie die Datei /etc/my.cnf und ändern Sie innodb_flush_log_at_trx_commit = 1 in 0. Dadurch besteht jedoch das Risiko, dass Daten verloren gehen, die nicht innerhalb von 1 Sekunde nach dem Datenbankabsturz in der Datenbank gespeichert sind. Die MySQL-Dokumentation beschreibt diesen Parameter wie folgt:

Wenn der Wert von innodb_flush_log_at_trx_commit 0 ist, wird der Protokollpuffer einmal pro Sekunde in die Protokolldatei geschrieben und der Vorgang zum Leeren auf die Festplatte wird für die Protokolldatei ausgeführt, aber bei einem Transaktions-Commit geschieht nichts. Wenn der Wert 1 ist (Standard), wird der Protokollpuffer bei jedem Transaktions-Commit in die Protokolldatei geschrieben und der Vorgang zum Leeren auf die Festplatte wird für die Protokolldatei ausgeführt. Wenn der Wert 2 ist, wird der Protokollpuffer bei jedem Commit in die Datei geschrieben, aber der Vorgang zum Leeren auf die Festplatte wird nicht ausgeführt. Das Leeren der Protokolldatei erfolgt jedoch auch bei dem Wert 2 einmal pro Sekunde. Beachten Sie, dass aufgrund von Prozessplanungsproblemen nicht zu 100 % garantiert ist, dass das Leeren einmal pro Sekunde jede Sekunde erfolgt.

2. Parameterbeschreibung

  • 0: Der Protokollpuffer wird einmal pro Sekunde in die Protokolldatei geschrieben und die Protokolldatei wird gleichzeitig geleert (auf die Festplatte geschrieben). In diesem Modus wird beim Festschreiben einer Transaktion der Schreibvorgang auf die Festplatte nicht aktiv ausgelöst.
  • 1: Bei jedem Commit einer Transaktion schreibt MySQL die Daten im Protokollpuffer in die Protokolldatei und überträgt sie auf die Festplatte. Dieser Modus ist die Systemvorgabe.
  • 2: Bei jedem Festschreiben einer Transaktion schreibt MySQL die Daten im Protokollpuffer in die Protokolldatei, der Leerungsvorgang wird jedoch nicht gleichzeitig ausgeführt. In diesem Modus führt MySQL einmal pro Sekunde einen Flush-Vorgang durch.

3. Hinweise

Wenn der Wert auf 0 gesetzt ist, ist dieser Modus der schnellste, aber weniger sicher. Ein Absturz des mysqld-Prozesses führt in der letzten Sekunde zum Verlust aller Transaktionsdaten.

Bei der Einstellung 1 ist dieser Modus der sicherste, aber auch der langsamste. Im Falle eines Absturzes des MySQL-Diensts oder des Serverhosts kann im Binärprotokoll höchstens eine Anweisung oder eine Transaktion verloren gehen.

Wenn der Wert auf 2 eingestellt ist, ist dieser Modus schneller und sicherer als 0. Alle Transaktionsdaten in der letzten Sekunde können nur verloren gehen, wenn das Betriebssystem abstürzt oder das System keinen Strom mehr hat.

Die beiden Parameter innodb_flush_log_at_trx_commit und sync_binlog sind Schlüsselparameter zur Steuerung der MySQL-Festplattenschreibstrategie und Datensicherheit. Wenn beide Parameter auf 1 gesetzt sind, ist die Schreibleistung am schlechtesten. Die empfohlene Vorgehensweise ist innodb_flush_log_at_trx_commit=2, sync_binlog=500 oder 1000.

Dies ist das Ende dieses Artikels zur Lösung des Problems, dass MySQL Daten sehr langsam löscht und einfügt. Weitere verwandte Inhalte zum Thema „MySQL Daten sehr langsam löschen und einfügen“ finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der langsamen Remote-Verbindung von Navicat zu MySQL
  • Gründe und Lösungen für langsame MySQL-Abfragen, die beim Senden von Daten hängen bleiben
  • Lösung für eine langsame Remote-Verbindung zur MySQL-Datenbank
  • Methoden und Ideen zur Lösung des Problems langsamer Abfragen aufgrund des Sendens von MySQL-Daten
  • So lösen Sie das Problem einer langsamen Remoteverbindung zu MySQL (mysql_connect öffnet die Verbindung langsam)
  • Deaktivieren Sie die MySQL-Domänennamenauflösung (um das Problem des langsamen Remotezugriffs auf MySQL zu lösen).

<<:  Eine kurze Diskussion über den Aufbau und den Betriebsmechanismus des Echtzeit-Computerframeworks Flink Cluster

>>:  Analyse der Gründe, warum Vue3 Proxy zur Implementierung der Datenüberwachung verwendet

Artikel empfehlen

Detaillierte Erklärung der Linux-Befehle sort, uniq, tr tools

Sortierwerkzeug Der Linux-Befehl „sort“ wird zum ...

Ubuntu-Installations-Grafiktreiber und CUDA-Tutorial

Inhaltsverzeichnis 1. Deinstallieren Sie den Orig...

Zusammenfassung der vier Möglichkeiten zur Einführung von CSS (Sharing)

1. Inline-Referenz: Wird direkt auf dem Etikett v...

Verwenden Sie CSS, um einen kreisförmigen Welleneffekt zu erzielen

Auf Mobilgeräten sehe ich häufig kreisförmige Wel...

Handtrack.js-Bibliothek zur Echtzeitüberwachung von Handbewegungen (empfohlen)

【Einführung】: Handtrack.js ist eine Prototypbibli...

Detaillierte Erläuterung der 6 Möglichkeiten der JS-Vererbung

Vererbung von Prototypketten Die Prototypenvererb...

IE6/7 wird ein Chaos: Problem mit der Höhe leerer Textknoten

Vorwort: Verwenden Sie die Debugleiste, um den Dok...

Detaillierte Erklärung des Vue-Datenproxys

Inhaltsverzeichnis 1. Worüber ich unten sprechen ...

Was sind die Unterschiede zwischen var let const in JavaScript

Inhaltsverzeichnis 1. Wiederholte Erklärung 1,1 v...

JS erhält Fünf-Sterne-Lob

In diesem Artikel wird der spezifische Code von J...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

Detaillierte Beispiele zur Ajax-Verwendung in js und jQuery

Inhaltsverzeichnis Natives JS So senden Sie eine ...