查询MYSQL锁表情况

2020-09-03 15:12:10 浏览数 (1)

1、列出当前在表缓存中打开的非临时表。 SHOW OPEN TABLES语法:

代码语言:javascript复制
SHOW OPEN TABLES
   [{FROM | IN} db_name]
   [LIKE 'pattern' | WHERE expr]
代码语言:javascript复制
mysql> show open tables from test like 'users';
 ---------- ------- -------- ------------- | Database | Table | In_use | Name_locked |
 ---------- ------- -------- ------------- 
| test     | users |      0 |           0 | ---------- ------- -------- ------------- 1 row in set (0.00 sec)

SHOW OPEN TABLES显示打开的表输出列解释:

  • Database: 数据库名称
  • Table: 表名
  • In_use: 表锁或锁请求的数量在表中。例如,如果一个客户机使用锁表t1写的表获得一个锁,那么In_use将是1。如果另一个客户端问题锁表t1写,而表仍然锁定,客户端将阻塞等待锁,但是锁请求导致In_use为2。如果计数为零,表是打开的,但目前没有使用。
  • Name_locked: 是否锁定表名。名称锁定用于操作,例如删除或重命名表。

2、列出锁定的表

代码语言:javascript复制
show open tables WHERE In_use > 0

例如检查tb_employees表是否被锁定:

代码语言:javascript复制
show open tables WHERE Table LIKE 'tb_employees' AND In_use > 0

参考:https://dev.mysql.com/doc/refman/5.6/en/show-open-tables.html

0 人点赞