定位導致「等待表元資料鎖定」狀態的交易
在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中文網其他相關文章!