您的位置:首页 > 数据库 > MySQL

mysql使用kill命令解决死锁问题,杀死某条正在执行的sql语句

2017-12-11 09:49 911 查看
http://blog.csdn.net/buster2014/article/details/51035768

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

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中各个线程状态。

[sql] view
plain copy

mysql> show processlist;  

+------+------+----------------------+----------------+---------+-------+-----------+---------------------   

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

+------+------+----------------------+----------------+---------+-------+-----------+---------------------   

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

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

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

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

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

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

[sql] view
plain copy

kill id;  

- 示例:  

kill 8358  

杀掉即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐