So fragen Sie ab, ob die MySQL-Tabelle gesperrt ist

So fragen Sie ab, ob die MySQL-Tabelle gesperrt ist

Spezifische Methode:

(Empfohlenes Tutorial: Lern-Tutorial zur MySQL-Datenbank)

Überprüfen des Tabellensperrstatus

# Prüfen, welche Tabellen gesperrt sind. Show OPEN TABLES where In_use > 0;

Zeigen Sie die SQL-Anweisung an, die den Deadlock verursacht hat

# Abfrage der Laufzeitinformationen der InnoDB-Engine „show engine innoDB status“;

Abfrageprozess

#Alle Prozesse abfragen show processlist;

Entsperren (Löschvorgang)

# Prozess-Kill-ID löschen;

Anzeigen, was gesperrt ist

# Die gesperrten Dinge anzeigen SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS

Anzeigen von Dingen, die auf Sperren warten

# Transaktionen anzeigen, die auf Sperren warten SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

Ergänzender Inhalt

MySQL-Befehl zur Anzeige des Sperrstatus

Status Bedeutung
Prüftabelle Überprüfen der Datentabellen (dies erfolgt automatisch).
Tabellen schließen Die geänderten Daten in der Tabelle werden auf die Festplatte geschrieben und die verwendete Tabelle wird geschlossen. Dieser Vorgang geht sehr schnell, ist dies jedoch nicht der Fall, sollten Sie prüfen, ob die Festplatte voll ist oder ob sie stark ausgelastet ist.
Aus verbinden Der Replikations-Slave-Server stellt eine Verbindung zum Master-Server her.
Kopieren in die temporäre Tabelle auf der Festplatte Da der temporäre Ergebnisset größer als tmp_table_size ist, wird die temporäre Tabelle aus Speichergründen vom Arbeitsspeicher in den Festplattenspeicher konvertiert.
Tmp-Tabelle erstellen Erstellen einer temporären Tabelle zum Speichern teilweiser Abfrageergebnisse.
Löschen aus der Haupttabelle Der Server führt den ersten Teil einer Löschung mehrerer Tabellen aus und hat gerade die erste Tabelle gelöscht.
Löschen aus Referenztabellen Der Server führt den zweiten Teil einer Mehrfachtabellenlöschung aus und löscht Datensätze aus anderen Tabellen.
Spültische FLUSH TABLES wird ausgeführt und wartet darauf, dass andere Threads die Datentabelle schließen.
Getötet Wenn eine Kill-Anforderung an einen Thread gesendet wird, überprüft der Thread das Kill-Flag und bricht die nächste Kill-Anforderung ab. MySQL überprüft das Kill-Flag in jeder Hauptschleife, aber in einigen Fällen kann es eine Weile dauern, bis der Thread beendet wird. Wenn der Thread durch andere Threads gesperrt ist, wird die Kill-Anforderung sofort wirksam, wenn die Sperre aufgehoben wird.
Gesperrt Durch eine andere Abfrage gesperrt.
Senden von Daten Die Datensätze der SELECT-Abfrage werden verarbeitet und die Ergebnisse werden an den Client gesendet.
Sortierung nach Gruppe Sortieren nach GROUP BY.
Sortieren nach Bestellung Sortierung für ORDER BY.
Tische öffnen Dieser Vorgang sollte schnell ablaufen, sofern er nicht durch andere Faktoren gestört wird. Beispielsweise kann die Tabelle nicht von anderen Threads geöffnet werden, bis die Anweisung ALTER TABLE oder LOCK TABLE abgeschlossen ist. Ich versuche, einen Tisch zu öffnen.
Duplikate entfernen Es wird eine SELECT DISTINCT-Abfrage ausgeführt, aber MySQL konnte im vorherigen Schritt doppelte Datensätze nicht durch Optimierung beseitigen. Daher muss MySQL doppelte Datensätze erneut entfernen und dann die Ergebnisse an den Client senden.
Tabelle erneut öffnen Es wird eine Sperre für eine Tabelle eingerichtet, dies kann jedoch erst nach einer Änderung der Tabellenstruktur erfolgen. Die Sperre wurde aufgehoben, die Tabelle wurde geschlossen und es wird versucht, die Tabelle erneut zu öffnen.
Reparatur durch Sortieren Korrigieren Sie die Anweisungen zum Sortieren, um einen Index zu erstellen.
Reparatur mit Keycache Die Reparaturanweisung besteht darin, unter Verwendung des Index-Cache nacheinander neue Indizes zu erstellen. Dies ist langsamer als die Reparatur durch Sortieren.
Durchsuche Zeilen für Updates Zur Aktualisierung werden die Datensätze gesucht, die die Bedingungen erfüllen. Dies muss erfolgen, bevor das UPDATE zugehörige Datensätze ändern kann.
Schlafen Warte auf eine neue Anfrage vom Client.
Systemsperre Wartet auf den Erwerb einer externen Systemsperre. Wenn Sie nicht mehrere MySQLD-Server ausführen, die gleichzeitig dieselbe Tabelle anfordern, können Sie externe Systemsperren deaktivieren, indem Sie den Parameter --skip-external-locking hinzufügen.
Schloss aufrüsten INSERT DELAYED versucht, eine Tabellensperre zu erwerben, um einen neuen Datensatz einzufügen.
Aktualisierung Nach passenden Datensätzen suchen und diese ändern.
Benutzersperre Wartet auf GET_LOCK().
Warten auf Tische Der Thread wird benachrichtigt, dass die Datentabellenstruktur geändert wurde und erneut geöffnet werden muss, um die neue Struktur zu erhalten. Um die Datentabelle dann erneut zu öffnen, müssen Sie warten, bis alle anderen Threads die Tabelle schließen. Diese Benachrichtigung wird in den folgenden Situationen generiert: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE oder OPTIMIZE TABLE.
Warten auf Handler-Einfügen INSERT DELAYED hat alle ausstehenden Einfügevorgänge verarbeitet und wartet auf neue Anforderungen.

Dies ist das Ende dieses Artikels zum Abfragen, ob eine MySQL-Tabelle gesperrt ist. Weitere Informationen zum Abfragen, ob eine MySQL-Tabelle gesperrt ist, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Wird die Tabelle durch ein Update in einer MySQL-Transaktion gesperrt?
  • Analyse des Sperrmechanismus der MySQL-Datenbank
  • Detaillierte Erläuterung der MySQL-Deadlock-Prüfung und Beispiele zur Deadlock-Entfernung
  • Die normale Methode der MySQL-Deadlock-Prüfungsverarbeitung
  • Bestimmen Sie anhand von Beispielen, ob das MySQL-Update die Tabelle sperrt
  • Pessimistisches Sperren und optimistisches Sperren in MySQL
  • Detaillierte Erklärung der Bedeutung und des Unterschieds zwischen MySQL-Zeilensperren und Tabellensperren
  • Verständnis und Anwendungsanalyse der pessimistischen und optimistischen Sperre von MySQL
  • MySQL 8.0.19 unterstützt die Sperrung eines Kontos nach dreimaliger Eingabe eines falschen Passworts (Beispiel)
  • Zusammenfassung des Wissens zu MySQL-Sperren

<<:  So installieren Sie Solr 8.6.2 in Docker und konfigurieren den chinesischen Wortsegmentierer

>>:  MySQL-Join-Abfragesyntax und Beispiele

Artikel empfehlen

Installieren und konfigurieren Sie SSH in CentOS7

1. Installieren Sie openssh-server yum install -y...

Beispielcode für die Batchbereitstellung von Nginx mit Ansible

1.1 Kopieren Sie das Nginx-Installationspaket und...

Mysql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „And“

MySQL-Abfrage mit mehreren Bedingungen und dem Sc...

Stellen Sie das Vue-Projekt auf einem Linux-Server bereit

Fall 1 vue-cli erstellt das vue3-Projekt, lädt da...

Deutsch: Ein Link-Tag vervollständigt href im IE automatisch

Englisch: Ein Link-Tag vervollständigt href im IE...

Eine kurze Analyse der Unterschiede zwischen Undo, Redo und Binlog in MySQL

Inhaltsverzeichnis Vorwort 【Protokoll rückgängig ...

CSS-Tutorial: CSS-Attribut-Medientyp

Eines der wichtigsten Merkmale eines Stylesheets ...

Grafisches Tutorial zur Installation von MySQL 5.6.35 unter Windows 10 64-Bit

1. Laden Sie MySQL Community Server 5.6.35 herunt...

MySQL etabliert eine effiziente Indexbeispielanalyse

Dieser Artikel beschreibt anhand von Beispielen, ...

Implementierung eines schwebenden Werbestreifens in HTML und CSS

1.html Teil Code kopieren Der Code lautet wie folg...

HTML-Subtag und Sup-Tag

Heute stelle ich zwei HTML-Tags vor, die ich nich...

Stil-Trigger-Effekt des Webseiten-Eingabefelds

<br />Dieses Beispiel untersucht hauptsächli...