要查看MySQL中所有等待锁的进程,可以使用以下命令:
SHOW ENGINE INNODB STATUS\G
这个命令将显示InnoDB存储引擎的状态信息,并且包含一个名为"TRANSACTIONS"的部分,其中列出了当前所有等待锁的事务。
在输出结果中,您需要查找"TRANSACTIONS"部分,并查看"INNODB WAITING FOR LOCK"这一行。该行下面的信息将显示所有等待锁的事务。每个事务都将显示一个唯一的事务ID,以及该事务所等待的锁的详细信息。
例如,以下是输出结果的一部分,其中列出了一个等待锁的事务:
------------------------
LATEST DETECTED DEADLOCK
------------------------
2021-09-20 17:10:10 0x7f1155d56700
*** (1) TRANSACTION:
TRANSACTION 1713389, ACTIVE 0 sec fetching rows
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 9, OS thread handle 139840986957824, query id 796 localhost root updating
UPDATE mytable SET value = 2 WHERE id = 1
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 1234 page no 1 n bits 72 index PRIMARY of table `mydatabase`.`mytable` trx id 1713389 lock_mode X locks rec but not gap waiting
在这个例子中,我们可以看到一个名为"TRANSACTION 1713389"的事务正在等待一个名为"RECORD LOCKS"的锁。
网友评论