如何查询mysql LOCK WAIT 等待的表

1. 流程

首先,我们来看一下整个查询 mysql LOCK WAIT 等待的表的流程。我们可以用一个表格来展示具体的步骤:

步骤 操作
1 查看当前mysql中的等待事务
2 查看等待事务所涉及的表
3 查看表锁情况
4 查看锁等待的具体信息

2. 操作步骤

步骤1:查看当前mysql中的等待事务

首先,我们需要查看当前mysql中的等待事务,找出哪些事务正在等待。我们可以使用以下SQL语句来查询:

SHOW ENGINE INNODB STATUS;

这条命令会返回一大段包含了 InnoDB 引擎状态信息的文本。我们需要找到 "TRANSACTIONS" 部分,其中有关于等待事务的信息。

步骤2:查看等待事务所涉及的表

接下来,我们需要查看等待事务所涉及的表。我们可以在 "TRANSACTIONS" 部分中找到 "TABLE LOCKS IMMEDIATE" 和 "TABLE LOCKS WAITING" 两个小节来查看等待的表。

步骤3:查看表锁情况

为了更详细地了解表的锁情况,我们可以使用以下SQL语句来查询表的锁情况:

SHOW OPEN TABLES WHERE In_use > 0;

这条命令会列出当前被使用的表,通过查看表的状态信息,我们可以进一步了解表的锁情况。

步骤4:查看锁等待的具体信息

最后,我们可以使用以下SQL语句来查看锁等待的具体信息:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE lock_trx_id IN 
(SELECT blocking_trx_id FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS);

这条命令会返回锁等待的具体信息,包括锁的类型、持有锁的事务ID、等待锁的事务ID等。

饼状图

pie
    title MySQL LOCK WAIT 查询
    "步骤1" : 25
    "步骤2" : 25
    "步骤3" : 25
    "步骤4" : 25

通过以上步骤,我们可以查询到mysql中LOCK WAIT等待的表的具体信息。希望这篇文章可以帮助你快速解决问题。如果有任何疑问,欢迎随时向我提问。祝您工作顺利!