1,MySQL5.6版本之前的解决方案:
查询表锁定的SQL语句:
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread
FROM
information_schema.innodb_lock_waits w
INNER JOIN
information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
INNER JOIN
information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
示例如下图:

2,MySQL5.7版本之后的解决方案:
MySQL5.7之后对锁表做了优化,查询表锁定的SQL语句比较简单,如下:
select * from sys.innodb_lock_waits;
示例如下图:

完结!!!
博客介绍了MySQL不同版本查询表锁定的解决方案。在MySQL 5.6版本之前有相应查询表锁定的SQL语句;而MySQL 5.7版本之后对锁表做了优化,查询表锁定的SQL语句更为简单。
795

被折叠的 条评论
为什么被折叠?



