Der kritischste dieser Befehle ist die Zustandsspalte, und die in MySQL aufgeführten Zustände sind hauptsächlich wie folgt:
Prüftisch Ich prüfe das Datenblatt (das ist automatisch). Abschlusstabellen Die in der Tabelle geänderten Daten werden auf die Festplatte zurückgeführt, und die bereits verbrauchte Tabelle wird geschlossen. Das ist ein schneller Vorgang, falls nicht, solltest du prüfen, ob der Speicherplatz voll ist oder ob die Festplatte belastet ist. Verbinden Sie sich Der Replikations-Slave-Server verbindet sich mit dem primären Server. Kopieren in die tmp-Tabelle auf der Festplatte Da die temporäre Ergebnismenge größer als tmp_table_size ist, wird die temporäre Tabelle vom Speicher in den Festplattenspeicher umgewandelt, um Speicher zu sparen. Erstellung einer tmp-Tabelle Eine temporäre Tabelle wird erstellt, um einige der Abfrageergebnisse zu speichern. Löschen aus der Haupttabelle Der Server führt den ersten Teil einer Multi-Table-Löschung durch und hat gerade die erste Tabelle gelöscht. Löschen aus Referenztabellen Der Server führt den zweiten Teil der Multi-Table-Löschung durch, nämlich das Löschen von Datensätzen aus anderen Tabellen. Flushing-Tabellen Ich mache die FLUSH TABLES und warte darauf, dass andere Threads die Datentabelle schließen. Getötet Wenn eine Kill-Anfrage an einen Thread gesendet wird, überprüft der Thread die Kill-Flagge und gibt die nächste Kill-Anfrage auf. MySQL prüft in jeder Hauptschleife auf Kill-Flags, obwohl der Thread in manchen Fällen für kurze Zeit aussterben kann. Wenn der Thread von einem anderen Thread gesperrt wird, tritt die Kill-Anfrage sofort in Kraft, sobald die Sperre aufgehoben wird. Abgeschlossen Von anderen Anfragen gesperrt. Daten senden Der Datensatz der SELECT-Abfrage wird verarbeitet, während die Ergebnisse an den Client gesendet werden. Sortierung nach Gruppe Sortiere für GRUPPE NACH. Sortieren nach Ordnung Die Sortierung erfolgt für ORDER BY. Eröffnungstische Dieser Prozess sollte schnell ablaufen, sofern nicht andere Faktoren ihn behindern. Zum Beispiel kann eine Datentabelle von einem anderen Thread nicht geöffnet werden, bis die ALTER TABLE- oder LOCK TABLE-Anweisung ausgeführt wurde. Ich versuche, einen Tisch zu öffnen. Entfernen von Duplikaten Eine SELECT DISTINCT Abfrage wird ausgeführt, aber MySQL kann die doppelten Datensätze in der vorherigen Stufe nicht optimieren. Daher muss MySQL die doppelten Datensätze erneut entfernen, bevor die Ergebnisse an den Client gesendet werden. Wiedereröffnungstabelle Eine Sperre auf einer Tabelle wird erreicht, muss jedoch nach der Änderung der Tabellenstruktur geändert werden. Ich habe das Schloss bereits freigegeben, das Datenblatt geschlossen und versucht, die Datentabelle wieder zu öffnen. Reparatur durch Sortieren Die Fix-Instruktion sortiert, um einen Index zu erstellen. Reparatur mit Keycache Die Fix-Direktive verwendet den Index-Cache, um neue Indizes nacheinander zu erstellen. Es wird langsamer sein als Reparatur durch Sortieren. Suche in Zeilen nach einem Update Berechtigte Unterlagen werden für Aktualisierungen identifiziert. Dies muss erledigt werden, bevor das UPDATE den relevanten Datensatz ändert. Schlafen Ich warte darauf, dass der Kunde eine neue Anfrage sendet. Systemsperre Warte darauf, eine externe Systemsperre zu erhalten. Wenn keine Mysqld-Server gleichzeitig laufen, die dieselbe Tabelle anfordern, können externe Systemsperren durch Hinzufügen des –skip-external-locking-Parameters verboten werden. Aufrüstung der Schleuse INSERT DELAYED versucht, eine Sperrtabelle dazu zu bringen, einen neuen Datensatz einzufügen. Aktualisierung Suche nach passenden Datensätzen und modifiziere sie. Benutzersperre wartet auf GET_LOCK(). Tischbedienung Der Thread wurde darüber informiert, dass die Datenblattstruktur geändert wurde und neu geöffnet werden musste, um die neue Struktur zu erhalten. Um die Datentabelle wieder zu öffnen, müssen Sie dann warten, bis alle anderen Threads die Tabelle geschlossen haben. Diese Benachrichtigung erfolgt in folgenden Fällen: TABELLEN tbl_name FLUSH, TABELLE ÄNDERN, TABELLE UMBENENNEN, REPARATURTABELLE, TABELLE ANALYSIEREN oder TABELLE OPTIMIEREN. Wartet auf den Handler-Einsatz INSERT DELAYED hat alle ausstehenden Einsätze verarbeitet und wartet auf eine neue Anfrage. Die meisten Zustände entsprechen schnellen Operationen; solange ein Thread einige Sekunden im gleichen Zustand bleibt, kann ein Problem auftreten, das überprüft werden muss. |