mysql 锁表确认及解除锁表
目录
一、查看表是否被锁
1、查询库表命令
2、连接工具直接查询
3、show processlist 命令
二、解锁表
一、查看表是否被锁
一共3种方式
1、查询库表命令
1)information_schema库里的processlist表,存着正在进行的线程数据。
可通过where条件模糊匹配执行sql中的表名来拿到该表的相关线程数据。
通过查看state字段确认表是否被锁,可翻译或百度查看详细锁表原因。
select id,db,user,host,command,time,state,info
from information_schema.processlist
#where info like '%表名%'
order by time desc
;
确认被锁后,用命令kill杀掉该线程来释放。
kill id;
2)未提交事物,阻塞DDL,继而阻塞所有同表的后续操作,查看未提交事务的进程
select * from information_schema.innodb_trx
3)通过show processlist看不到TableA上有任何操作,在information_schema.innodb_trx中也没有任何进行中的事务。
可能是在一个显式的事务中,对表进行了一个失败的操作,如查询一个不存在的字段,这时事务没有开始,但失败语句获取到的锁还有效,没有释放。
select * from performance_schema.events_statements_current
通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。
3、show processlist 命令
使用show processlist;查询命令来查看当前所有线程
show processlist;
区别:
如果不用full,则在Info字段中只显示每个语句的前100个字符
这个命令要一条条数据查找,建议使用前两种才方法
查看info字段中的表名。
通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。
二、解锁表
确认被锁后,用命令kill杀掉相关线程来释放。
kill 线程id;
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_68547003/article/details/136478599
。
版权声明:
作者:SE_Gai
链接:https://www.cnesa.cn/1608.html
来源:CNESA
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论