我正在尝试在表上执行一些 DDLSHOW PROCESSLIST
导致“等待表元数据锁定”消息。
我怎样才能知道哪笔交易尚未结束?
我正在使用 MySQL v5.5.24。
适用于 MySql 版本
SHOW ENGINE INNODB STATUS \G
查找该部分 -
TRANSACTIONS
我们可以用信息架构 Tables.
有用的查询
要检查事务正在等待的所有锁:
USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;
阻塞交易列表:
SELECT *
FROM INNODB_LOCKS
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);
OR
SELECT INNODB_LOCKS.*
FROM INNODB_LOCKS
JOIN INNODB_LOCK_WAITS
ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);
特定表上的锁列表:
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 故障排除:查询不起作用时该怎么办 https://rads.stackoverflow.com/amzn/click/com/1449312004,第 6 章 - 第 96 页。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)