mysql锁表确认及解除锁表的实现示例
一、查看表是否被锁
一共3种方式
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;
字段 | 注释 |
id | 线程id标识,当锁表或进程卡死时可用kill杀掉 |
user | 当前连接用户 |
host | 显示当前线程命令发出的的客户端Ip和端口号,用来追踪 |
db | 当前连接的数据库名 |
command | 连接状态,一般是休眠(sleep),查询(query),连接(connect)的命令的类型 |
time | 连接执行时间,单位是秒 |
state | 显示当前线程中sql语句的执行状态 |
info | 执行的sql语句 |
确认被锁后,用命令kill杀掉该线程来释放。
kill id;
2、连接工具直接查询
我这用navicat演示
通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。
3、show processlist 命令
使用show processlist;查询命令来查看当前所有线程
show processlist;
也可添加full查看更详细的内容
show full processlist;
区别:
- 如果不用full,则在Info字段中只显示每个语句的前100个字符
这个命令要一条条数据查找,建议使用前两种才方法
查看info字段中的表名。
通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。
二、解锁表
确认被锁后,用命令kill杀掉相关线程来释放。
kill 线程id;
到此这篇关于mysql 锁表确认及解除锁表的实现示例的文章就介绍到这了,更多相关mysql 锁表确认及解除锁表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MySql 8.0.16版本安装提示已经不使用“UTF8B3”而是使用“UTF8B4”问题
这篇文章主要介绍了MySql 8.0.16版本安装提示已经不使用“UTF8B3”而是使用“UTF8B4”问题 ,需要的朋友可以参考下2019-07-07浅谈mysql导出表数据到excel关于datetime的格式问题
这篇文章主要介绍了浅谈mysql导出表数据到excel关于datetime的格式问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07
最新评论