首頁  >  文章  >  資料庫  >  如何識別MySQL中導致「等待表元資料鎖」的罪魁禍首事務?

如何識別MySQL中導致「等待表元資料鎖」的罪魁禍首事務?

Linda Hamilton
Linda Hamilton原創
2024-10-30 17:23:25889瀏覽

How to Identify the Culprit Transaction Causing

調查“Waiting for Table Metadata Lock”的來源

在MySQL中,在DDL時遇到“Waiting for table Metadata Lock”訊息查詢可能會令人沮喪。此狀態通常表示另一個事務正在受影響的表上持有鎖,從而阻止當前事務繼續進行。

辨識罪魁禍首事務

找出哪個事務是負責此保留,請考慮使用以下方法:

1。 MySQL v5.5.24 及以下

對於 5.7.3 之前的 MySQL 版本,請執行以下命令:

SHOW ENGINE INNODB STATUS \G

檢查「TRANSACTIONS」部分以識別有問題的交易。

2。信息模式表

所有等待鎖:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

阻塞事務:

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

特定表上的鎖定:

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

等待鎖定的事務:

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

其他參考:

有關解決此問題的綜合指南,請參閱“MySQL 故障排除:查詢不起作用時該怎麼辦”,第6 章,第96 頁。

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

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