「MySQL」- 识别被锁住的表

查找被锁定的表

使用 SHOW OPEN TABLES 查看锁表:

SHOW OPEN TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

In_user

表示是否锁表。每个锁表请求都会导致该字段加壹。首个锁表请求会将该字段设置为壹,后续锁表请求会导致该字段增加,但是锁表动作会被阻塞。

为 0 表示未锁表。每当要锁表时,该字段增加 1,后续的锁表请求会被阻塞

为 1 表示被锁表。

为 N (N>1) 表示有壹个初始锁N-1 个被阻塞的锁

Name_locked

指示表名是否锁定(比如 DROP 或 REANME 请求)

查看 InnoDB 状态

SHOW ENGINE INNODB STATUS;

第二步、结束锁定表的查询

show PROCESSLIST;

KILL 123353 ;

参考文献

MySQL : Identify Locked Tables
MySQL :: MySQL 8.4 Reference Manual :: 15.7.7.24 SHOW OPEN TABLES Statement
transactions – How to detect deadlocks in Mysql / innodb? – Stack Overflow