【Frage】 Die INSERT-Anweisung ist eine der am häufigsten verwendeten SQL-Anweisungen. In letzter Zeit meldet ein MySQL-Server von Zeit zu Zeit Warnungen über gleichzeitig ausgeführte Threads. Aus den Protokollinformationen geht hervor, dass eine große Anzahl langsamer Insert-Abfragen Dutzende von Sekunden zur Ausführung benötigt, auf das Leeren der Protokolle wartet und sich im Abfrage-Endzustand befindet. [Vorläufige Analyse] Aus der Perspektive des Wartens auf Ressourcen wird die meiste Zeit in der Phase innodb_log_file verbracht. Es wird vermutet, dass dies durch Festplattenprobleme verursacht werden kann. Nach der Untersuchung wurden im Server selbst keine Hardwareprobleme gefunden. Später, wenn der Thread zunimmt, wird die automatische Sammlung von pstack aktiviert, um die Position zu lokalisieren, an der der MySQL-Thread wartet. 【Analyseprozess】 Nach der Bereitstellung des automatischen Crawlings von pstack gab es 6 Thread-Parallelitäten >= 50 Alarme (bei jeder Ausgabe eines Alarms wurde eine große Anzahl langsamer Abfragen generiert) und 3 davon wurden sofort abgefangen. Wenn die Anzahl gleichzeitiger Threads zunimmt, bleiben mehr als 50 Threads in Die SQL-Anweisung zum Thread 0x519c5940 lautet wie folgt und wurde 18 Sekunden lang ausgeführt Der Zweck Wenn die Ausführung des ersten Threads langsam ist, befinden sich die nachfolgenden Threads in einem Wartezustand und die gesamte Gruppe von Transaktionen kann nicht festgeschrieben werden. Der Vorgang kann auch wie folgt verstanden werden: Sitzung A COMMIT-->Sperre abrufen-->Binlog schreiben-->Commit abgeschlossen Sitzung B COMMIT-->Auf Sperre warten-------------------------->Sperre erhalten-->Binlog schreiben-->Commit abgeschlossen Warum wird der erste Thread so langsam ausgeführt? Wir haben die Protokolldateien während des Alarmzeitraums analysiert und festgestellt, dass die Protokolldateien zwei große Transaktionen von 15 M und 20 M enthielten. Überprüfen Sie die Protokolldetails. Es gibt eine große Transaktionslöschanweisung namens „delete from“, die etwa 230.000 Datensätze enthält. Das Löschen von 230.000 Datensätzen im ROW-Modus erzeugt eine Protokolldatei von etwa 20 MB. Die Datenträgerleerung dauert lange, wodurch die Übermittlung anderer Transaktionen in derselben Gruppe blockiert wird. Die Startzeit der Transaktion entspricht der Alarmzeit Die zurückgebliebenen gruppierten Transaktionen werden konzentriert auf die Festplatte geschrieben. Dies spiegelt sich im Festplattenindex wider. Der Index disk_write_kbytes zeigt während des Problemzeitraums einen deutlichen Anstieg. 【Optimierungsplan】 1. Entwicklern wird empfohlen, die Verwendung der Anweisung „delete from“ zum Löschen einer großen Transaktion der gesamten Tabelle zu vermeiden. [Andere Problemumgehungen] 2. Binlog-Aufzeichnungen im ROW-Modus erzeugen eine große Anzahl von Protokollen. Der Wechsel in den MIXED-Modus kann das Problem theoretisch lösen. 3. Ersetzen Sie die Festplatte durch eine mit besserer Leistung 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:
|
<<: Lösung für Nginx, das nicht zur Upstream-Adresse springt
>>: Eine kurze Diskussion über 12 klassische Probleme in Angular
CSS-Vars-Ponyfill Bei der Verwendung von CSS-Vari...
Inhaltsverzeichnis 1minio ist einfach 2 Docker er...
Installieren Sie Fastdfs auf Docker Mount-Verzeic...
1. SVN-Server installieren yum installiere Subver...
Installieren Sie Jenkins über Yum 1. Installation...
Beschreibung Lösung Der Bridge-Modus der virtuell...
Kerncode -- Im Folgenden werde ich die Implementi...
Hintergrund Wir können react-color verwenden, um ...
Wenn wir eine Webseite erstellen, möchten wir man...
Die Player, die wir auf Webseiten sehen, sind nic...
1. Installationsumgebung 1. HUAWEI Mate X CPU i5 ...
Inhaltsverzeichnis 1. Problemszenario 2. Ursachen...
Ein allgemeiner Vorschlag besteht darin, Indizes ...
Nach der Konfiguration der TabBar im WeChat-Apple...
In der neuesten Version von Ubuntu müssen Benutze...