ITPub博客

首页 > 数据库 > MySQL > Mysql使用kill命令解决死锁问题

Mysql使用kill命令解决死锁问题

原创 MySQL 作者:freebus 时间:2020-03-31 14:10:31 0 删除 编辑

在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下:


1 KILL [CONNECTION | QUERY] thread_id

每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。


KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。


如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有超级管理员权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。


首先登录MySQL,然后使用: show processlist; 查看当前mysql中各个线程状态。



1 mysql> show processlist; 

2 +------+------+----------------------+----------------+---------+-------+-----------+---------------------  

3 | Id  | User | Host         | db       | Command | Time | State   | Info 

4 +------+------+----------------------+----------------+---------+-------+-----------+---------------------  

5 | 7028 | root | ucap-devgroup:53396 | platform    | Sleep  | 19553 |      | NULL 

6 | 8352 | root | ucap-devgroup:54794 | platform    | Sleep  | 4245 |      | NULL

7 | 8353 | root | ucap-devgroup:54795 | platform    | Sleep  |   3 |      | NULL

8 | 8358 | root | ucap-devgroup:62605 | platform    | query  | 4156 | updating | update t_shop set |

以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.


然后运行kill命令,命令格式如下: 


1 kill id; 

2 - 示例: 

3 kill 8358

杀掉即可。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31365439/viewspace-2683548/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-06-22

  • 博文量
    34
  • 访问量
    19637