翼度科技»论坛 编程开发 mysql 查看内容

mysql锁表确认及解除锁表的实现示例

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
一、查看表是否被锁

一共3种方式

1、查询库表命令

information_schema库里的processlist表,存着正在进行的线程数据,可通过where条件模糊匹配执行sql中的表名来拿到该表的相关线程数据。
通过查看state字段确认表是否被锁,可翻译或百度查看详细锁表原因。
  1. select id,db,user,host,command,time,state,info
  2. from information_schema.processlist
  3. #where info like '%表名%'
  4. order by time desc;
复制代码

字段注释
id线程id标识,当锁表或进程卡死时可用kill杀掉
user当前连接用户
host显示当前线程命令发出的的客户端Ip和端口号,用来追踪
db当前连接的数据库名
command连接状态,一般是休眠(sleep),查询(query),连接(connect)的命令的类型
time连接执行时间,单位是秒
state显示当前线程中sql语句的执行状态
info执行的sql语句
确认被锁后,用命令kill杀掉该线程来释放。
  1. kill id;
复制代码
2、连接工具直接查询

我这用navicat演示



通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。

3、show processlist 命令

使用show processlist;查询命令来查看当前所有线程
  1. show processlist;
复制代码
也可添加full查看更详细的内容
  1. show full processlist;
复制代码
区别:

  • 如果不用full,则在Info字段中只显示每个语句的前100个字符
这个命令要一条条数据查找,建议使用前两种才方法
查看info字段中的表名。
通过查看state字段确认表是否被锁。
确认被锁后,用命令kill杀掉该线程来释放。

二、解锁表

确认被锁后,用命令kill杀掉相关线程来释放。
  1. kill 线程id;
复制代码
到此这篇关于mysql 锁表确认及解除锁表的实现示例的文章就介绍到这了,更多相关mysql 锁表确认及解除锁表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/database/322109rc9.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具