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 Erläuterung der MySQL-Benutzervariablen und Set-Anweisungsbeispiele

Inhaltsverzeichnis 1 Einführung in Benutzervariab...

Einführung in Keyword-Design-Methoden im Webdesign

Häufig ignorieren wir beim Erstellen der Homepage ...

Untersuchung der MySQL-Paging-Leistung

Mehrere gängige Paging-Methoden: 1. Rolltreppenme...

So verhindern Sie, dass Website-Inhalte in Suchmaschinen aufgenommen werden

Normalerweise besteht das Ziel beim Erstellen ein...

Beispiel zum Referenzieren von Umgebungsvariablen in Docker Compose

In einem Projekt müssen Sie häufig Umgebungsvaria...

JavaScript-Entwurfsmuster, Proxy-Muster lernen

Inhaltsverzeichnis Überblick Durchführung Schutz-...