Heim  >  Artikel  >  Datenbank  >  Wie identifiziere ich die Transaktion, die in MySQL die Sperre „Warten auf Tabellenmetadatensperre“ enthält?

Wie identifiziere ich die Transaktion, die in MySQL die Sperre „Warten auf Tabellenmetadatensperre“ enthält?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 01:45:02157Durchsuche

How to Identify the Transaction Holding the

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!

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