Heim > Datenbank > MySQL-Tutorial > Wie identifiziere ich die verantwortliche Transaktion, die „Warten auf Tabellenmetadatensperre' in MySQL verursacht?

Wie identifiziere ich die verantwortliche Transaktion, die „Warten auf Tabellenmetadatensperre' in MySQL verursacht?

Linda Hamilton
Freigeben: 2024-10-30 17:23:25
Original
970 Leute haben es durchsucht

How to Identify the Culprit Transaction Causing

Untersuchung der Ursache von „Warten auf Tabellenmetadatensperre“

In MySQL wird während der DDL die Meldung „Warten auf Tabellenmetadatensperre“ angezeigt Anfragen können frustrierend sein. Dieser Status weist oft darauf hin, dass eine andere Transaktion eine Sperre für die betroffene Tabelle hält und verhindert, dass die aktuelle Transaktion fortgesetzt wird.

Identifizierung der verantwortlichen Transaktion

Um festzustellen, um welche Transaktion es sich handelt Wenn Sie für diesen Halt verantwortlich sind, sollten Sie die folgenden Ansätze in Betracht ziehen:

1. MySQL v5.5.24 und niedriger

Führen Sie für MySQL-Versionen vor 5.7.3 den folgenden Befehl aus:

SHOW ENGINE INNODB STATUS \G
Nach dem Login kopieren

Überprüfen Sie den Abschnitt „TRANSAKTIONEN“, um die fehlerhafte Transaktion zu identifizieren.

2. Informationsschematabellen

Alle wartenden Sperren:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
Nach dem Login kopieren

Blockierende Transaktionen:

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

Sperren für eine bestimmte Tabelle:

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

Transaktionen, die auf Sperren warten:

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

Zusätzliche Referenz:

Eine umfassende Anleitung zur Fehlerbehebung dieses Problems finden Sie unter „MySQL-Fehlerbehebung: Was zu tun ist, wenn Abfragen nicht funktionieren“, Kapitel 6, Seite 96.

Das obige ist der detaillierte Inhalt vonWie identifiziere ich die verantwortliche Transaktion, die „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