Suchen der Transaktion, die den Status „Warten auf Tabellenmetadatensperre“ verursacht
In MySQL wird währenddessen die Meldung „Warten auf Tabellenmetadatensperre“ angezeigt DDL-Operationen weisen auf eine Sperre hin, die von einer anderen Transaktion gehalten wird. Um die verantwortliche Transaktion zu ermitteln, ziehen Sie die folgenden Methoden in Betracht:
MySQL-Version < 5.7.3
-
SHOW ENGINE INNODB STATUS G: Dieser Befehl zeigt den Abschnitt „TRANSAKTIONEN“ an, in dem offene Transaktionen aufgelistet sind.
INFORMATION_SCHEMA-Tabellen
-
SELECT * FROM INNODB_LOCK_WAITS: Ruft Informationen zu allen Sperrwartezeiten ab.
-
SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS): Identifiziert blockierende Transaktionen.
-
SELECT * FROM INNODB_LOCKS INNER JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID): Listet die gleichen Informationen auf wie die vorherige Abfrage.
-
SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name: Sucht Sperren für eine bestimmte Tabelle.
-
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT': Listet Transaktionen auf, die auf Sperren warten.
Referenz:
- MySQL-Fehlerbehebung: Was zu tun ist Vorgehensweise, wenn Abfragen nicht funktionieren, Kapitel 6 – Seite 96
Das obige ist der detaillierte Inhalt vonWie identifiziere ich die Transaktion, die in MySQL die Sperre „Warten auf Tabellenmetadatensperre' enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!