Analyse der Verwendung des MySQL-Datenbankbefehls „show processlist“

Analyse der Verwendung des MySQL-Datenbankbefehls „show processlist“

Wenn bei der tatsächlichen Projektentwicklung die Datenbank stark unter Druck steht, z. B. durch eine große Anzahl von Abfragen oder Einfügungen, insbesondere Multithread-Einfügungen, können wir einige der langsam ausgeführten SQLs beenden. Ein häufig verwendeter Befehl ist show processlist

1. Was ist die Prozessliste anzeigen

Prozessliste anzeigen: Wenn wir die offizielle Website von MySQL überprüfen, können wir feststellen, dass hauptsächlich abgefragt wird, welche Threads in der Datenbank ausgeführt werden. Wir können die langsameren Threads (Threads mit längeren Zeitwerten) beenden. Darüber hinaus ändern sich die von „show full processlist“ zurückgegebenen Ergebnisse in Echtzeit.

2. So verwenden Sie die Show Processlist

Es gibt drei Möglichkeiten, „show processlist“ auszuführen: Befehlszeile, SQL-Anweisung, Navicat-Client usw.

1) Befehlszeile: SHOW FULL PROCESSLIST\G

Die Ausführungsergebnisse sind wie folgt:

mysql> VOLLSTÄNDIGE PROZESSLISTE ANZEIGEN\G

*************************** 1. Reihe ***************************
ID: 1
Benutzer: Systembenutzer
Gastgeber:
db: NULL
Befehl: Verbinden
Zeit: 1030455
Status: Wartet darauf, dass der Master ein Ereignis sendet
Info: NULL

*************************** 2. Reihe ***************************
ID: 2
Benutzer: Systembenutzer
Gastgeber:
db: NULL
Befehl: Verbinden
Zeit: 1004
Status: Hat alle Relay-Logs gelesen; wartet auf den Slave
    E/A-Thread zum Aktualisieren
Info: NULL

*************************** 3. Reihe ***************************
Artikelnummer: 3112
Benutzer: Replikator
Gastgeber: artemis:2204
db: NULL
Befehl: Binlog Dump
Zeit: 2144
Status: Hat das gesamte Binärprotokoll an den Slave gesendet; wartet auf die Aktualisierung des Binärprotokolls
Info: NULL

*************************** 4. Reihe ***************************
Artikelnummer: 3113
Benutzer: Replikator
Gastgeber: iconnect2:45781
db: NULL
Befehl: Binlog Dump
Zeit: 2086
Status: Hat das gesamte Binärprotokoll an den Slave gesendet; wartet auf die Aktualisierung des Binärprotokolls
Info: NULL

*************************** 5. Reihe ***************************
Artikelnummer: 3123
Benutzer: stefan
Host: localhost
db: apollon
Befehl: Abfrage
Zeit: 0
Status: NULL
Info: VOLLSTÄNDIGE PROZESSLISTE ANZEIGEN
Zeilen im Set (0,00 Sek.)

2) Sie können die relevante Informationstabelle in der Datenbank über SQL-Anweisungen abfragen

Wählen Sie ID, Datenbank, Benutzer, Host, Befehl, Zeit, Status und Informationen aus information_schema.processlist aus, sortiert nach Zeit absteigend

3) Sie können es mit dem Navicat-Tool anzeigen. Die folgende Abbildung ist ein Screenshot der Abfrage mit Navicat.

3. So interpretieren Sie die Show-Prozessliste

Nachfolgend finden Sie eine Interpretation der mit diesem Befehl erzielten Ergebnisse.

ID: Die eindeutige Kennung des Threads, der mit dem MySQL-Server verbunden ist. Sie können den Thread beenden, um die Verbindung zu beenden.

Benutzer: Der Benutzer des aktuellen Threads, der eine Verbindung zur Datenbank herstellt

Host: Zeigt an, von welcher IP und welchem ​​Port diese Anweisung gesendet wird. Kann verwendet werden, um den Benutzer aufzuspüren, der die problematische Aussage gemacht hat

db: die Datenbank, mit der der Thread verbunden ist, oder null, wenn keine vorhanden ist

Befehl: Zeigt den von der aktuellen Verbindung ausgeführten Befehl an, normalerweise „sleep“, „Query“ oder „Connect“.

Zeit: Die Zeit in Sekunden, die sich der Thread im aktuellen Status befindet

Status: Zeigt den Status der SQL-Anweisung unter Verwendung der aktuellen Verbindung an. Dies ist eine sehr wichtige Spalte. Alle Status werden später beschrieben. Bitte beachten Sie, dass der Status nur ein bestimmter Status bei der Ausführung einer Anweisung ist. Beispielsweise muss eine SQL-Anweisung, wie z. B. eine Abfrage, möglicherweise die Zustände „In temporäre Tabelle kopieren“, „Ergebnis sortieren“ und „Daten senden“ durchlaufen, bevor sie abgeschlossen werden kann.

Info: Die vom Thread ausgeführte SQL-Anweisung oder null, wenn keine Anweisung ausgeführt wird. Mit dieser Anweisung können vom Client gesendete oder intern ausgeführte Anweisungen ausgeführt werden.

4. So verarbeiten Sie die Ergebnisse der Show-Prozessliste

In den obigen Schritten können wir die Ausführungszeit jedes Threads und andere Informationen überprüfen. Daher können wir Threads mit längerer Ausführungszeit direkt beenden, indem wir die Kill-ID-Nummer direkt ausführen.

Wenn Sie die Zeit länger als 5 Minuten überprüfen möchten, können Sie den folgenden SQL-Befehl einfügen und ausführen

select concat('kill ', id, ';') aus information_schema.processlist, wobei command != 'Sleep' und Zeit > 5*60, sortiert nach Zeit absteigend

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Erläuterung der MySQL-Leistungsprüfung durch den Befehl „show processlist“
  • MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung
  • mysql show processlist zeigt den MySQL-Abfrageprozess an
  • So überprüfen Sie MySQL-Sperren mit dem Befehl „MySQL Show Processlist“
  • Allgemeine MySQL-Befehle und chinesische verstümmelte Zeichen in Ubuntu
  • Detaillierte Einführung in die Verwendung des Show-Befehls in MySQL
  • Anweisungen zum Hinzufügen der Direktive „extension=php_mysqli.dll“ in php.ini

<<:  Detaillierte Erläuterung der Installationsbefehle für Linux-Systemsoftware basierend auf Debian (empfohlen)

>>:  Eine kurze Erläuterung der $notify-Punkte des Elements

Artikel empfehlen

Implementierung eines einfachen Karussells auf Basis von JavaScript

In diesem Artikel wird der spezifische JavaScript...

Ausführliche Erläuterung versteckter Felder, einer neuen Funktion von MySQL 8.0

Vorwort MySQL Version 8.0.23 fügt eine neue Funkt...

Interaktion im Webdesign: Eine kurze Diskussion über Paging-Probleme

Funktion: Zur vorherigen Seite oder zur nächsten ...

Zusammenfassung der Anwendung von Übergangskomponenten in Vue-Projekten

​Transtion in Vue ist eine Kapselungskomponente f...

Detaillierte Erläuterung der Reihenfolge der JS-Objektdurchquerung

Einige von Ihnen haben vielleicht gehört, dass di...

Verwendung und Analyse des Mysql Explain-Befehls

Mit dem Befehl „mysql explain“ wird gezeigt, wie ...

jQuery zum Erzielen eines gleitenden Treppeneffekts

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

Reiner CSS-Code zum Erzielen eines Drag-Effekts

Inhaltsverzeichnis 1. Beispiel für Drag-Effekt 2....

Erläuterung verschiedener Möglichkeiten zum Ausführen von Tomcat unter Linux

Tomcat unter Linux starten und herunterfahren Sta...

Beispiel zum Aktivieren langsamer Abfragen in MySQL

Vorwort Das langsame Abfrageprotokoll ist eine se...

HTML+CSS+JS zur Implementierung des Spiels „Nicht auf das Whiteboard treten“

Inhaltsverzeichnis Hintergrund 1. Gedankenanalyse...

Detaillierter Installationsprozess und Prinzip des Vue-Routers

Inhaltsverzeichnis 1. Implementierungsprinzip des...