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

Linda Hamilton
發布: 2024-10-30 17:23:25
原創
887 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!