Heim  >  Artikel  >  Datenbank  >  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
Linda HamiltonOriginal
2024-10-30 17:23:25889Durchsuche

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

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

2. Informationsschematabellen

Alle wartenden Sperren:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

Blockierende Transaktionen:

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS);

Sperren für eine bestimmte Tabelle:

SELECT *
FROM INFORMATION_SCHEMA.INNODB_LOCKS
WHERE LOCK_TABLE = db_name.table_name;

Transaktionen, die auf Sperren warten:

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

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!

Stellungnahme:
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