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

Connector-Konfiguration in Tomcat

JBoss verwendet Tomcat als Webcontainer. Die Konf...

So überwachen Sie Oracle-Datenbanken mit Zabbix Agent2

Überblick In Zabbix Version 5.0 und höher wurde e...

Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository

Bisher wurden die von uns verwendeten Images alle...

css Alle Elemente ab dem n-ten abrufen

Der spezifische Code lautet wie folgt: <div id...

So führen Sie Befehle auf einem Remote-Linux-System über SSH aus

Manchmal müssen wir einige Befehle auf einem Remo...

19 MySQL-Optimierungsmethoden im Datenbankmanagement

Nach der MySQL-Datenbankoptimierung kann nicht nu...

Rundungsvorgang des Datums-/Uhrzeitfelds in MySQL

Inhaltsverzeichnis Vorwort 1. Hintergrund 2. Simu...

Implementierung eines Bootstrap-Webseiten-Layoutrasters

Inhaltsverzeichnis 1. So funktioniert das Bootstr...

So starten und starten Sie nginx unter Linux neu

Nginx (Engine x) ist ein leistungsstarker HTTP- u...

Implementierungscode für die nahtlose Verbindung des Div-Bildlaufbands

Code kopieren Der Code lautet wie folgt: <html...