MySQL数据库锁表,如何释放锁

数据库锁表,运行的程序开始报错

问题出现原因

项目中某个表的数据太多而且无效,影响用户使用体验,计划用sql语句进行删除,然后手写sql进行删除数据操作,之后发现这个sql执行的时间比较长,然后进行停止操作。之后就出现了关联表被锁的现象,导致程序执行update操作报错。

解决办法

  1. 重启数据库(不推荐) 当时项目还在生产运行,出现这个问题也比较棘手,当时拿着报错去百度,没找到立即解决的办法。无奈只能尝试重启数据库的方式来解决问题。
  2. 通过查看数据库锁情况来kill进程来解决问题。这个是在问题解决后,尝试再找到另一种方式来合理的解决问题。首先用sql查询一下数据库情况,SHOW PROCESSLIST;运行结果为如下
    执行sql的操作结果如果State列内容中有lock状态,那么通过Info列就可以得出哪张表被锁了,如果有被锁的表,那么在命令行输入(kill 后面的id是上图的第一列值)Kill 进程id,如果出现了多个被锁的表就一个一个进行kill。

总结

以上的解决方式当时我使用的是第一种,第二种是在百度中找到的,没有使用过,不过还是推荐第二种方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值