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

Eine kurze Diskussion über den Unterschied zwischen src und href in HTML

Einfach ausgedrückt bedeutet src „Ich möchte dies...

Unvollständige Lösung für die Verwendung von Eingabetyp=Textwert=str

Ich bin heute auf ein sehr seltsames Problem gesto...

Analyse der Gründe, warum das MySQL-Indexsystem den B + -Baum verwendet

Inhaltsverzeichnis 1. Was ist ein Index? 2. Warum...

10 tödliche semantische Fehler in der Webtypografie

<br />Dies stammt aus dem Inhalt von „Web Fr...

Sehr detaillierte JavaScript-Implementierung eines Webseiten-Karussells

Inhaltsverzeichnis Erstellen von HTML-Seiten Impl...

Miniprogramm zur Implementierung des kompletten Einkaufswagens

Das Miniprogramm implementiert einen vollständige...

jQuery-Plugin zur Implementierung des Suchverlaufs

Jeden Tag ein jQuery-Plugin – um einen Suchverlau...

Beispielcode zum Konfigurieren von Nginx zur Unterstützung von https

1. Einleitung Lassen Sie Ihre Website immer noch ...

Detaillierte Erklärung des Typschutzes in TypeScript

Inhaltsverzeichnis Überblick Typzusicherungen in ...