首頁  >  文章  >  資料庫  >  如何識別MySQL中持有「等待表元資料鎖」的事務?

如何識別MySQL中持有「等待表元資料鎖」的事務?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 01:45:02213瀏覽

How to Identify the Transaction Holding the

定位導致「等待表元資料鎖定」狀態的交易

在MySQL中,遇到「等待表元資料鎖」訊息DDL 操作表示另一個交易持有的鎖。要確定罪魁禍首交易,請考慮以下方法:

MySQL 版本 5.7.3

  • SHOW ENGINE INNODB STATUS G
  • SHOW ENGINE INNODB STATUS G
SHOW ENGINE INNODB STATUS G

SHOW ENGINE INNODB STATUS GSHOW ENGINE INNODB STATUS GSHOW ENGINE INNODB STATUS G

此指令顯示「TRANSACTIONS」部分,列出未完成的交易。
  • INFORMATION_SCHEMA表
  • SELECT * FROM INNODB_LOCK_WAITS:
  • SELECT * FROM INNODB_LOCK_WAITS: 檢索有關所有鎖定等待的資訊。
  • SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID從INNODB_LOCK_WAITS): 識別交易。
  • SELECT * FROM INNODB_LOCKS INNER JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_TRX_FID):
SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name:

定位特定表上的鎖定。

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT':
    列出等待鎖的事務。
參考:MySQL 故障排除:該怎麼做當查詢不起作用時,第6 章- 頁96

以上是如何識別MySQL中持有「等待表元資料鎖」的事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn