查看锁表线程

使用下面的命令查看哪个表被锁了:

1
2
3
4
5
6
show open tables where in_use>0;
+----------+-------+--------+-------------+
| Database | Table | In_use | Name_locked |
+------------------+--------+-------------+
| test  | t_user   |      0 |           0 | 
| test  | t_role   |      4 |           0 | 
  • In_use表示有多少线程正在使用该表,这些线程有可能已经给该表加锁,或者正在等待或得锁给该表加锁
  • Name_locked是否表名称被锁定,表名称被锁定一般发生在rename table时。

结合show processlist可查看哪个线程锁表了:

1
2
3
show processlist;

kill the_id

参考