查看锁表线程

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

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

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

1show processlist;
2
3kill the_id

参考