Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann festgestellt werden, welche Transaktion den Status „Warten auf Tabellenmetadatensperre' in MySQL verursacht?

Patricia Arquette
Freigeben: 2024-10-31 02:12:30
Original
126 Leute haben es durchsucht

How to Identify Which Transaction is Causing the “Waiting for Table Metadata Lock” State in MySQL?

Identifizieren von Transaktionen, die den Status „Warten auf Tabellenmetadatensperre“ verursachen

Beim Versuch, DDL-Vorgänge für eine Tabelle in MySQL-Version 5.5.24 durchzuführen, aber ein Problem auftritt „Warten auf Tabellenmetadatensperre“-Meldungen ist es wichtig, die für diese Sperre verantwortliche Transaktion zu ermitteln.

Lösung

Für MySQL-Versionen unter 5.7.3 :

Führen Sie den folgenden Befehl aus, um detaillierte Informationen zum Status abzurufen:

SHOW ENGINE INNODB STATUS \G
Nach dem Login kopieren

Suchen Sie den Abschnitt „TRANSAKTIONEN“ und identifizieren Sie die offene Transaktion, die noch geschlossen werden muss.

Für alle MySQL-Versionen:

Informationen aus den INFORMATION_SCHEMA-Tabellen abrufen:

Alle wartenden Sperren:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;
Nach dem Login kopieren

Transaktionen blockieren:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);
Nach dem Login kopieren

ODER

SELECT INNODB_LOCKS.* FROM INNODB_LOCKS JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);
Nach dem Login kopieren

Sperren für eine bestimmte Tabelle:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name;
Nach dem Login kopieren

Wartende Transaktionen:

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT';
Nach dem Login kopieren

Weitere Informationen finden Sie unter „MySQL-Fehlerbehebung: Was zu tun ist, wenn Abfragen nicht funktionieren“, Kapitel 6, Seite 96 .

Das obige ist der detaillierte Inhalt vonWie kann festgestellt werden, welche Transaktion den Status „Warten auf Tabellenmetadatensperre' in MySQL verursacht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!