MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

1. SHOW PROCESSLIST-Befehl

SHOW PROCESSLIST zeigt die laufenden Threads (vom Benutzer ausgeführte Threads) (oder SHOW FULL PROCESSLIST zeigt weitere Informationen). Sie können diese Informationen auch aus der Tabelle INFORMATION_SCHEMA PROCESSLIST oder dem Befehl mysqladmin processlist abrufen. Wenn Sie über das PROCESS-Privileg verfügen, können Sie alle Threads sehen. Andernfalls können Sie nur Ihre eigenen Threads sehen (also die Threads, die mit dem von Ihnen verwendeten MySQL-Konto verknüpft sind). Wenn Sie das Schlüsselwort FULL nicht verwenden, werden die ersten 100 Zeichen jeder Anweisung im Infofeld angezeigt.

Prozessinformationen sind auch in der Tabelle performance_schema.threads verfügbar. Der Zugriff auf Threads erfordert jedoch keine Mutex-Sperre und hat nur minimale Auswirkungen auf die Serverleistung. INFORMATION_SCHEMA.PROCESSLIST und SHOW PROCESSLIST haben aufgrund der Notwendigkeit eines Mutex negative Auswirkungen auf die Leistung. performance_schema.threads zeigt auch Informationen zu Hintergrund-Threads an, die in INFORMATION_SCHEMA.PROCESSLIST und SHOW PROCESSLIST nicht verfügbar sind. Dies bedeutet, dass performance_schema.threads verwendet werden kann, um eine zusätzliche Quelle von Thread-Informationen auf Aktivität zu überwachen.

Die Anweisung SHOW PROCESSLIST ist nützlich, wenn Sie die Fehlermeldung „Zu viele Verbindungen“ erhalten und verstehen möchten, was los ist. MySQL reserviert eine zusätzliche Verbindung für Konten mit dem SUPER-Privileg, um sicherzustellen, dass Administratoren sich immer mit dem System verbinden und es untersuchen können (vorausgesetzt, Sie erteilen dieses Privileg nicht allen Benutzern).

Threads können mit der KILL-Anweisung beendet werden.

Nachfolgend sehen Sie ein Beispiel für die Ausgabe von SHOW PROCESSLIST:

mysql> vollständige Prozessliste anzeigen\G
*************************** 1. Reihe ***************************
  ID: 123
 Benutzer: root
 Host: localhost
  db: Leistungsschema
Befehl: Abfrage
 Zeit: 0
 Status: beginnend
 Info: vollständige Prozessliste anzeigen
1 Zeile im Satz (0,00 Sek.)

Die von SHOW PROCESSLIST erzeugten Spalten haben folgende Bedeutung:

Ausweis

Die Verbindungskennung ist derselbe Wertetyp, der in der Spalte „ID“ der Tabelle „INFORMATION_SCHEMA.PROCESSLIST“, in der Spalte „PROCESSLIST_ID“ der Thread-Tabelle der Leistungsansicht und in den von der Funktion „CONNECTION_ID()“ zurückgegebenen Werten angezeigt wird.

Benutzer

Der MySQL-Benutzer, der die Anweisung ausgibt. Handelt es sich dabei um den Systembenutzer, bezieht sich dies auf den Nicht-Client-Thread, der vom Server zur internen Verarbeitung von Aufgaben erstellt wurde. Dies kann der E/A- oder SQL-Thread sein, der von einem Replikations-Slave oder einem verzögerten Zeilenhandler verwendet wird. Ein nicht authentifizierter Benutzer ist ein Thread, der einer Client-Verbindung zugeordnet wurde, die Authentifizierung des Client-Benutzers jedoch noch nicht abgeschlossen hat. event_scheduler bezieht sich auf den Thread, der geplante Ereignisse überwacht. Wenn es sich um einen Systembenutzer handelt, wird in der Spalte „Host“ kein Host angegeben.

Gastgeber

Der Hostname des Clients, der die Anweisung ausgegeben hat (mit Ausnahme des Systembenutzers, der keinen Hostnamen hat), um die Ermittlung, welcher Client was tut, zu erleichtern. Wird als Hostname:Client-Port angezeigt.

db

Die Standarddatenbank für die aktuell ausgeführte Anweisung, sofern eine ausgewählt ist, andernfalls NULL.

Befehl

Zeigt den Befehl an, den dieser Thread derzeit ausführt. Normalerweise entspricht dies einer DDL- oder DML-Anweisung.

Zeit

Gibt an, wie lange sich der Thread im aktuellen Zustand befunden hat. Das aktuelle Zeitkonzept des Threads kann sich in einigen Fällen ändern: Der Thread kann die Zeit ändern. Für einen Thread, der auf einem Slave ausgeführt wird und ein Ereignis von einem Master verarbeitet, wird die Thread-Zeit auf die im Ereignis gefundene Zeit eingestellt und spiegelt somit die aktuelle Zeit auf dem Master und nicht auf dem Slave wider. SET TIMESTAMP = Wert.

Zustand

Entsprechend der Befehlsanweisung entsprechen die meisten Zustände sehr schnellen Operationen. Wenn ein Thread mehrere Sekunden in einem bestimmten Zustand verbleibt, liegt möglicherweise ein Problem vor, das untersucht werden muss.

Info

Enthält den Text der vom Thread ausgeführten Anweisung oder NULL, wenn sie nicht ausgeführt wird. Standardmäßig enthält dieser Wert nur die ersten 100 Zeichen der Anweisung. Um die vollständige Anweisung anzuzeigen, verwenden Sie SHOW FULL PROCESSLIST.

2. Thread-Befehlswert

Ein Thread kann einen der folgenden Befehlswerte haben:

Binlog-Dump: Dies ist der Thread auf dem Master-Server, der zum Senden des Binärprotokollinhalts an den Slave-Server verwendet wird.

Table Dump: Der Thread sendet den Tabelleninhalt an den Slave-Server.

Benutzer ändern: Der Thread führt einen Benutzerwechselvorgang aus.

Anweisung schließen: Der Thread schließt eine vorbereitete Anweisung.

Verbinden: Während der Replikation stellt ein Slave-Server eine Verbindung zu seinem Master-Server her.

Connect Out: Bei der Replikation stellt der Slave-Server eine Verbindung zu seinem Master-Server her.

Datenbank erstellen: Der Thread führt einen Vorgang zum Erstellen einer Datenbank aus.

Daemon: Dieser Thread ist intern auf dem Server und nicht der Thread, der Clientverbindungen bedient.

Debug: Der Thread generiert Debug-Informationen.

Verzögertes Einfügen: Der Thread ist ein Handler für verzögertes Einfügen.

Drop DB: Der Thread führt einen Drop-Database-Vorgang aus.

Ausführen: Der Thread führt eine vorbereitete Anweisung aus (der Anweisungstyp „Prepare“ ist eine vorkompilierte Anweisung, und JDBC unterstützt diese Art der SQL-Ausführung).

Abrufen: Der Thread führt die Ergebnisse einer vorbereiteten Anweisung aus.

Feldliste: Der Thread ruft Informationen zu Tabellenspalten ab.

DB initieren: Der Thread wählt eine Standarddatenbank aus.

Kill: Der Thread tötet einen anderen Thread.

Lange Daten: Dieser Thread ruft lange Daten als Ergebnis der Ausführung einer vorbereiteten Anweisung ab.

Ping: Der Thread verarbeitet eine Ping-Anforderung an den Server.

Vorbereiten: Der Thread generiert einen Ausführungsplan für die Anweisung.

Prozessliste: Der Thread generiert Informationen über die Server-Threads.

Abfrage: Der Thread führt eine Anweisung aus.

Beenden: Der Thread wird beendet.

Aktualisieren: Der Thread aktualisiert eine Tabelle, ein Protokoll oder einen Cache, setzt Statusvariablen zurück oder repliziert Serverinformationen.

Slave registrieren: Der Thread registriert einen Slave-Server.

Anweisung zurücksetzen: Der Thread setzt eine vorbereitete Anweisung zurück.

Option festlegen: Der Thread legt eine Ausführungsoption für Client-Anweisungen fest oder setzt sie zurück.

Herunterfahren: Der Thread fährt den Server herunter.

Ruhezustand: Der Thread wartet darauf, dass der Client ihm eine neue Anweisung sendet.

Statistik: Der Thread generiert Serverstatusinformationen.

Zeit: Nie verwendet.

3. Thread-Statuswert

  • Allgemeiner Thread-Statuswert

In der folgenden Liste werden die Thread-Statuswerte beschrieben, die mit der allgemeinen Abfrageverarbeitung verknüpft sind, im Gegensatz zu komplexeren Aktivitäten wie der Replikation. Viele davon werden nur verwendet, um Fehler im Server zu finden.

Nach dem Erstellen: Wenn ein Thread eine Tabelle erstellt (einschließlich einer internen temporären Tabelle), wird sie am Ende der Funktion erstellt, die die Tabelle erstellt. Dieser Status wird verwendet, auch wenn die Tabelle aufgrund eines Fehlers nicht erstellt werden kann.

Analysieren: Der Thread berechnet die Schlüsselverteilung der MyISAM-Tabelle (zum Beispiel für ANALYZE TABLE).

Berechtigungen prüfen: Der Thread prüft, ob der Server über die erforderlichen Berechtigungen zum Ausführen der Anweisung verfügt.

Tabelle wird geprüft: Der Thread führt eine Tabellenprüfoperation durch.

Aufräumen: Der Thread hat einen Befehl verarbeitet und bereitet die Freigabe von Speicher und das Zurücksetzen einiger Statusvariablen vor.

Tabellen schließen: Der Thread schreibt geänderte Tabellendaten auf die Festplatte und schließt verwendete Tabellen. Dies sollte eine schnelle Operation sein. Ist dies nicht der Fall, stellen Sie sicher, dass die Festplatte nicht voll ist und dass sie nicht extrem stark genutzt wird.

In temporäre Tabelle kopieren: Der Thread verarbeitet eine ALTER TABLE-Anweisung. Dieser Zustand tritt ein, nachdem die Tabelle mit der neuen Struktur erstellt wurde, aber bevor die Zeilen in die Tabelle kopiert wurden. Für Threads in diesem Zustand können Sie das Leistungsschema verwenden, um Informationen zum Fortschritt des Kopiervorgangs zu erhalten.

Kopieren in Gruppentabelle: Wenn die Anweisung unterschiedliche ORDER BY- und GROUP BY-Kriterien hat, werden die Zeilen in Gruppen angeordnet und in eine temporäre Tabelle kopiert.

Index erstellen: Der Thread verarbeitet ALTER TABLE ... ENABLE KEYS einer MyISAM-Tabelle.

Sortierindex erstellen: Der Thread verarbeitet eine SELECT-Anweisung, die mithilfe einer internen temporären Tabelle analysiert wurde.

Tabelle erstellen: Der Thread erstellt eine Tabelle, was das Erstellen temporärer Tabellen umfasst.

Übertragen der ALTER-Tabelle an die Speicher-Engine: Der Server hat die ALTER-Tabelle vor Ort abgeschlossen und die Ergebnisse übertragen.

Löschen aus der Haupttabelle: Der Server führt den ersten Teil einer Löschung mehrerer Tabellen aus. Er löscht nur aus der ersten Tabelle und speichert die Spalten und Offsets, die für die Löschung aus den anderen (Referenz-)Tabellen verwendet werden sollen.

Löschen aus Referenztabellen: Der Server führt den zweiten Teil einer Löschung mehrerer Tabellen aus und löscht übereinstimmende Zeilen aus den anderen Tabellen.

discard_or_import_tablespace: Der Thread verarbeitet eine Anweisung ALTER TABLE ... DISCARD TABLESPACE oder ALTER TABLE ... IMPORT TABLESPACE.

Ende: Dies tritt am Ende, aber vor der Bereinigung einer ALTER TABLE-, CREATE VIEW-, DELETE-, INSERT-, SELECT- oder UPDATE-Anweisung auf.

Ausführen: Der Thread hat mit der Ausführung einer Anweisung begonnen.

Ausführung von init_command: Der Thread führt Anweisungen im Wert der Systemvariablen init_command aus.

Elemente freigeben: Der Thread hat einen Befehl ausgeführt. Einige der in diesem Status durchgeführten Elementfreigaben umfassen das Abfragen des Caches. Auf diesen Status folgt normalerweise eine Bereinigung.

FULLTEXT-Initialisierung: Der Server bereitet die Durchführung einer Volltextsuche in natürlicher Sprache vor.

init: Dieser Vorgang wird vor der Initialisierung von ALTER TABLE, DELETE, INSERT, SELECT oder UPDATE ausgeführt. Zu den Aktionen, die der Server in diesem Zustand durchführt, gehören das Leeren von Binärprotokollen, Innodb-Protokollen und einige Bereinigungsvorgänge für den Abfragecache. Für den Endzustand können folgende Aktionen eintreten: Abfrage-Cache-Einträge werden nach der Änderung von Daten in der Tabelle gelöscht, Ereignisse werden in das Binärprotokoll geschrieben und Speicherpuffer, einschließlich Blobs, werden freigegeben.

Killed: Die KILL-Anweisung wird ausgeführt und sendet eine Anweisung an den Thread, dass er beim nächsten Aktivieren des Kill-Flags unterbrochen werden soll. Das Flag wird in jeder Hauptschleife von MySQL überprüft, in einigen Fällen kann es jedoch eine kurze Zeit dauern, bis ein Thread beendet wird. Wenn der Thread durch einen anderen Thread gesperrt ist, wird das Kill wirksam, sobald der andere Thread die Sperre aufhebt.

Sperren von Systemtabellen: Der Thread versucht, eine Systemtabelle (beispielsweise die Zeitzone oder die Protokolltabelle) zu sperren.

Login: Der Anfangszustand des Verbindungsthreads, bis der Client sich erfolgreich authentifiziert.

Schlüssel verwalten: Der Server aktiviert oder deaktiviert Tabellenindizes.

NULL: Dieser Status wird für den Status „PROCESSLIST ANZEIGEN“ verwendet.

Öffnen von Systemtabellen: Der Thread hat versucht, eine Systemtabelle (beispielsweise die Zeitzonen- oder Protokolltabelle) zu öffnen.

Tabellen öffnen: Der Thread versucht, eine Tabelle zu öffnen. Dies sollte ein sehr schneller Vorgang sein, sofern nichts das Öffnen verhindert. Beispielsweise kann eine ALTER TABLE- oder LOCK TABLE-Anweisung verhindern, dass eine Tabelle geöffnet wird, bis die Anweisung abgeschlossen ist. Möglicherweise müssen Sie auch darauf achten, ob der Wert des Parameters table_open_cache groß genug ist. Verwenden Sie für Systemtabellen den Status „Systemtabellen öffnen“.

Optimieren: Der Server führt eine erste Optimierung der Abfrage durch.

Vorbereitung: Dieser Zustand tritt während der Abfrageoptimierung auf.

Bereinigen alter Relay-Protokolle: Der Thread löscht unnötige Relay-Protokolldateien.

Abfrageende: Dieser Status tritt nach der Verarbeitung der Abfrage und vor dem Status der Elementfreigabe ein.

Entfernen von Duplikaten: Die Verwendung von SELECT DISTINCT in dieser Abfrage verhindert, dass MySQL unterschiedliche Operationen in einem frühen Stadium optimiert. Daher benötigt MySQL einen zusätzlichen Schritt, um alle doppelten Zeilen zu entfernen, bevor das Ergebnis an den Client gesendet wird.

Temporäre Tabelle wird entfernt: Der Thread entfernt eine interne temporäre Tabelle, nachdem eine SELECT-Anweisung verarbeitet wurde. Wenn keine temporäre Tabelle erstellt wird, wird dieser Status nicht verwendet.

Umbenennen: Der Thread benennt eine Tabelle um.

Ergebnistabelle umbenennen: Der Thread verarbeitet eine ALTER TABLE-Anweisung, hat die neue Tabelle erstellt und sie umbenannt, um die ursprüngliche Tabelle zu ersetzen.

Tabellen erneut öffnen: Der Thread hat eine Sperre für eine Tabelle erhalten, aber nach dem Erhalt der Sperre festgestellt, dass sich die zugrunde liegende Tabellenstruktur geändert hat. Es gibt die Sperre frei, schließt die Tabelle und versucht, sie erneut zu öffnen.

Reparieren durch Sortieren: Der Reparaturcode verwendet das Sortieren, um den Index zu erstellen.

Vorbereitung für „Tabelle ändern“: Der Server bereitet die Ausführung von „ALTER TABLE“ vor Ort vor.

Reparatur abgeschlossen: Der Thread hat eine Multithread-Reparatur einer MyISAM-Tabelle abgeschlossen.

Reparieren mit Schlüsselcache: Der Reparaturcode erstellt Schlüssel nacheinander durch Verwendung des Schlüsselcache, was viel langsamer ist als die Reparatur durch Sortieren.

Rollback: Der Thread führt ein Rollback der Transaktion durch.

Status speichern: Bei MyISAM-Tabellenoperationen (wie Reparatur oder Analyse) speichert der Thread den neuen Tabellenstatus im .MYI-Dateiheader. Der Status umfasst Informationen wie Zeilenanzahl, AUTO_INCREMENT-Zähler und Schlüsselverteilung.

Zeilen zum Aktualisieren durchsuchen: Der Thread führt die erste Phase aus, um vor der Aktualisierung alle übereinstimmenden Zeilen zu finden. Dies ist erforderlich, wenn durch das UPDATE der Index geändert werden soll, der zum Auffinden der betreffenden Zeilen verwendet wird.

Setup: Der Thread startet eine ALTER TABLE-Operation.

Sortieren nach Gruppe: Der Thread führt eine Abfrage aus, die ein GROUP BY erfüllt.

Sortieren nach Reihenfolge: Der Thread führt eine Abfrage aus, die ein ORDER BY erfüllt.

Index sortieren: Der Thread sortiert Indexseiten für einen effizienteren Zugriff während MyISAM-Tabellenoptimierungsvorgängen.

Sortierergebnis: Für eine SELECT-Anweisung ähnelt dies dem Erstellen eines Sortierindexes, jedoch für nicht temporäre Tabellen.

Statistiken: Der Server berechnet Statistiken, um einen Abfrageausführungsplan zu entwickeln. Befindet sich ein Thread längere Zeit in diesem Zustand, ist der Server wahrscheinlich an die Festplatte gebunden und führt andere Aufgaben aus.

Update: Der Thread bereitet die Aktualisierung der Tabelle vor.

Aktualisierung: Der Thread sucht nach zu aktualisierenden Zeilen und aktualisiert sie.

Aktualisieren der Haupttabelle: Der Server führt den ersten Teil einer Aktualisierung mehrerer Tabellen aus. Er aktualisiert nur die erste Tabelle und speichert die Spalten und Offsets, die zum Aktualisieren der anderen (referenzierten) Tabellen verwendet werden.

Aktualisieren von Referenztabellen: Der Server führt den zweiten Teil einer Aktualisierung mehrerer Tabellen aus und aktualisiert übereinstimmende Zeilen aus den anderen Tabellen.

Benutzersperre: Der Thread ist dabei, eine über einen GET_LOCK()-Aufruf angeforderte beratende Sperre anzufordern, oder wartet darauf. Aufgrund von SHOW PROFILE bedeutet dieser Status, dass der Thread die Sperre anfordert (nicht darauf wartet).

Benutzer-Schlaf: Der Thread ruft einen SLEEP()-Aufruf auf.

  • Fehlerdiagnose-Zustandswert (persönliche Extraktion)

Protokollierung langsamer Abfragen: Der Thread schreibt Anweisungen in das Protokoll langsamer Abfragen.

Tabelle ändern: Der Server führt direkt eine ALTER TABLE-Operation durch.

Empfangen vom Client: Der Server liest Pakete vom Client.

In temporäre Tabelle kopieren: Der Server kopiert eine temporäre Tabelle von der Festplatte in den Speicher. Dabei handelt es sich um eine temporäre Tabelle, die direkt auf der Festplatte erstellt und nicht vom Speicher auf die Festplatte übertragen wurde.

In temporäre Tabelle auf der Festplatte kopieren: Der Zustand, wenn der Thread die temporäre Tabelle von der Festplatte in den Speicher kopiert, nachdem er sie zum Speichern von Speicher in einen festplattenbasierten Speicher geändert hat.

Temporäre Tabelle erstellen: Der Thread erstellt eine temporäre Tabelle im Speicher oder auf der Festplatte. Wenn die Tabelle im Speicher erstellt, aber später in eine Festplattentabelle konvertiert wird, lautet der Status des Vorgangs „Kopieren in temporäre Tabelle auf der Festplatte“.

Daten senden: Der Thread liest und verarbeitet Zeilen aus einer SELECT-Anweisung und sendet Daten an den Client. Da bei Vorgängen in diesem Zustand in der Regel eine große Zahl von Festplattenzugriffen (Lesevorgängen) ausgeführt wird, handelt es sich dabei im Allgemeinen um den Zustand, der während der gesamten Lebensdauer einer bestimmten Abfrage am längsten andauert.

Senden an den Client: Der Server schreibt ein Datenpaket an den Client.

Warten auf Commit-Sperre: FLUSH TABLES WITH READ LOCK wartet auf eine Commit-Sperre.

Warten auf globale Lesesperre: FLUSH TABLES WITH READ LOCK wartet auf eine globale Lesesperre oder die globale Systemvariable read_only wird gesetzt.

Warten auf Tabellen: Der Thread erhält eine Benachrichtigung, dass sich die zugrunde liegende Struktur der Tabelle geändert hat und die Tabelle erneut öffnen muss, um die neue Struktur zu erhalten. Um die Tabelle erneut zu öffnen, müssen Sie jedoch warten, bis alle anderen Threads die Tabelle geschlossen haben. Eine Benachrichtigung erfolgt, wenn ein anderer Thread FLUSH TABLES oder eine der folgenden Anweisungen verwendet hat: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE oder OPTIMIZE TABLE.

Warten auf Leerung der Tabelle: Der Thread führt FLUSH TABLES aus und wartet darauf, dass alle Threads ihre Tabellen schließen, oder der Thread erhält eine Benachrichtigung, dass sich die zugrunde liegende Struktur in der Tabelle geändert hat und die Tabelle erneut geöffnet werden muss, um die neue Struktur zu erhalten. Um die Tabelle erneut zu öffnen, müssen Sie jedoch warten, bis alle anderen Threads die Tabelle geschlossen haben. Diese Benachrichtigung wird ausgegeben, wenn ein anderer Thread FLUSH TABLES oder eine der folgenden Anweisungen verwendet hat: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE oder OPTIMIZE TABLE.

Warten auf Sperre vom Typ „lock_type“: Der Server wartet darauf, eine THR_LOCK-Sperre oder eine Sperre vom Metadaten-Sperrsubsystem abzurufen, wobei „lock_type“ den Sperrtyp angibt. Der Status THR_LOCK bedeutet: Warten auf Sperre auf Tabellenebene; diese Status zeigen Warten auf Metadatensperre an: Warten auf Ereignismetadatensperre, Warten auf globale Lesesperre, Warten auf Schemametadatensperre, Warten auf gespeicherte Funktionsmetadatensperre, Warten auf gespeicherte Prozedurmetadatensperre, Warten auf Tabellenmetadatensperre, Warten auf Triggermetadatensperre.

Schreiben ins Netz: Der Server schreibt Datenpakete ins Netz. Wenn ein Thread lange ausgeführt wird und sich immer im Status „Schreiben ins Netz“ befindet, sendet er ständig Datenpakete ins Netz. Sie können versuchen, die max_allowed_packet-Größe anzupassen. Darüber hinaus kann dies zu einer erheblichen Blockierung anderer Threads führen.

Warten auf Bedingung: Ein allgemeiner Zustand, in dem der Thread darauf wartet, dass eine Bedingung erfüllt wird. Es sind keine spezifischen Zustandsinformationen verfügbar.

Systemsperre: Der Thread hat mysql_lock_tables() aufgerufen und der Thread-Status wurde nie aktualisiert. Dies ist ein sehr häufiger Zustand und kann viele Gründe haben. Beispielsweise fordert ein Thread eine interne oder externe Systemsperre für eine Tabelle an oder wartet darauf. Dies kann passieren, wenn InnoDB während der Ausführung von LOCK TABLES auf eine Sperre auf Tabellenebene wartet. Wenn dieser Zustand durch die Anforderung externer Sperren verursacht wird und Sie nicht mehrere mysqld-Server verwenden, die auf dieselben MyISAM-Tabellen zugreifen, können Sie externe Systemsperren mit der Option --skip-external-locking deaktivieren. Da die externe Sperre jedoch standardmäßig deaktiviert ist, besteht eine hohe Wahrscheinlichkeit, dass diese Option nicht funktioniert. Aufgrund von SHOW PROFILE bedeutet dieser Status, dass der Thread die Sperre anfordert (nicht darauf wartet). Verwenden Sie für Systemtabellen den Status „Systemtabellen sperren“.

  • Cache-Statuswert abfragen

Überprüfen der Berechtigungen für zwischengespeicherte Abfragen: Der Server überprüft, ob der Benutzer über Berechtigungen zum Zugriff auf zwischengespeicherte Abfrageergebnisse verfügt.

Abfragecache für Abfrage prüfen: Der Server prüft, ob die aktuelle Abfrage im Abfragecache vorhanden ist.

Ungültigmachen von Abfrage-Cache-Einträgen: Ein Abfrage-Cache-Eintrag wird als ungültig markiert, weil sich die zugrunde liegende Tabelle geändert hat.

Senden des zwischengespeicherten Ergebnisses an den Client: Der Server ruft das Ergebnis der Abfrage aus dem Abfragecache ab und sendet es an den Client.

Speichern des Ergebnisses im Abfragecache: Der Server speichert die Abfrageergebnisse im Abfragecache.

Warten auf Abfrage-Cache-Sperre: Dieser Status tritt auf, wenn die Sitzung darauf wartet, die Abfrage-Cache-Sperre zu übernehmen. In dieser Situation müssen möglicherweise einige Abfrage-Cache-Vorgänge ausgeführt werden, z. B. INSERT- oder DELETE-Anweisungen, die den Abfrage-Cache ungültig machen, RESET QUERY CACHE usw.

  • Threadstatuswert des Ereignisplaners

Diese Zustände gelten für den Ereignisdispatcher-Thread, den Thread, der zum Ausführen versendeter Ereignisse erstellt wurde, oder den Thread, der den Dispatcher beendet.

Clearing

Der Scheduler-Thread oder der Thread, der das Ereignis ausführt, wird beendet und steht kurz vor dem Ende.

Initialisiert

Der Scheduler-Thread oder der Thread, der Ereignisse ausführt, wird initialisiert.

Warten auf die nächste Aktivierung

Der Scheduler hat eine nicht leere Ereigniswarteschlange, aber die nächste Aktivierung liegt in der Zukunft.

Warten auf das Beenden des Schedulers

Der Thread hat SET GLOBAL event_scheduler=OFF ausgegeben und wartet darauf, dass der Scheduler gestoppt wird.

Warten auf leere Warteschlange

Die Ereigniswarteschlange des Schedulers ist leer und er schläft.

  • andere

Zusätzlich zu den oben genannten Kategorien gibt es auch den Statuswert (Status) des Replikationsmaster-Threads, den Statuswert (Status) des Replikations-Slave-IO-Threads, den Statuswert (Status) des Replikations-Slave-SQL-Threads und den Statuswert (Status) des Replikations-Slave-Connect-Threads. Einzelheiten sind zu sehen: Statusübergang des MySQL-Master-Slave-Replikationsthreads

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:
  • Erläuterung der MySQL-Leistungsprüfung durch den Befehl „show processlist“
  • 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
  • Analyse der Verwendung des MySQL-Datenbankbefehls „show processlist“

<<:  Verstehen Sie die anfängliche Verwendung von Redux in React in einem Artikel

>>:  Öffnen Sie den Windows-Server-Port (nehmen Sie als Beispiel Port 8080)

Artikel empfehlen

Zusammenfassung der JavaScript-Timertypen

Inhaltsverzeichnis 1.setInterval() 2.setTimeout()...

Vue+SSH-Framework zur Realisierung von Online-Chat

In diesem Artikel wird der spezifische Code des V...

Detaillierte Erklärung zum effizienten MySQL-Paging

Vorwort Normalerweise wird für MySQL-Abfragen mit...

SQL Left Join und Right Join - Prinzip und Beispielanalyse

Es gibt zwei Tabellen, und die Datensätze in Tabe...

Detailliertes Tutorial zur Installation von mysql-8.0.20 unter Linux

** Installieren Sie mysql-8.0.20 unter Linux ** U...

Detailliertes Tutorial zum Erstellen eines Gitlab-Servers auf CentOS8.1

Über den Unterschied zwischen Gitlab und Github m...

Regeln für die Verwendung gemeinsamer MySQL-Indizes

Ein gemeinsamer Index wird auch als zusammengeset...

Lösung für den MySQL-Fehlercode 1064

Wenn die Wörter in der SQL-Anweisung mit den Schl...

Der Prozess der Bereitstellung eines Projekts auf einem anderen Host mit Jenkins

Umfeld Hostname IP-Adresse Aufschlag Jenkins 192....