kill - 如何停止正在运行的MySQL查询?
我从我的Linux shell连接到mysql。 我不时地运行一个太大的mysql查询。 它打印和打印,我已经知道这不是我的意思。 我想停止查询。
点击mysql(几次)完全杀死mysql然后带我回到shell,所以我必须重新连接。
是否可以在不杀死mysql本身的情况下停止查询?
6个解决方案
395 votes
mysql>show processlist;
mysql> kill "number from first col";
baklarz2048 answered 2019-02-21T14:50:50Z
62 votes
只是补充一下
KILL QUERY **Id**其中Id是连接ID,来自show processlist
如果您不希望在从某个应用程序运行时通常终止连接,则更为可取。
有关更多详细信息,请在此处阅读mysql doc
mtariq answered 2019-02-21T14:51:40Z
34 votes
连接到mysql
mysql -uusername -p -hhostname
显示完整的流程清单:
mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query | 0 | NULL | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
杀死特定查询。 这里id = 9255451
mysql> kill 9255451;
如果您获得权限被拒绝,请尝试以下SQL:
CALL mysql.rds_kill(9255451)
minhas23 answered 2019-02-21T14:52:28Z
11 votes
使用mysqladmin来终止失控查询:
运行以下命令:
mysqladmin -uusername -ppassword pr
然后记下进程ID。
mysqladmin -uusername -ppassword kill pid
失控查询应该不再消耗资源。
minhas23 answered 2019-02-21T14:53:14Z
8 votes
如果您有mysqladmin可用,您可以获得以下查询列表:
> mysqladmin -uUSERNAME -pPASSWORD pr
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| 137 | beet | localhost:53535 | people | Query | 292 | Sending data | DELETE FROM |
| 145 | root | localhost:55745 | | Query | 0 | | show processlist |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
然后你可以停止托管长时间运行查询的mysql进程:
> mysqladmin -uUSERNAME -pPASSWORD kill 137
Rudy Lattae answered 2019-02-21T14:53:52Z
0 votes
这个问题的作者提到它通常只在之后MySQL打印输出,他意识到执行了错误的查询。如上所述,在这种情况下,Ctrl-C没有帮助。 但是,我注意到了它将中止当前查询 - 如果您在任何输出之前捕获它打印。 例如:
mysql> select * from jos_users, jos_comprofiler;
MySQL忙于生成上述两个表的笛卡尔积你很快就会注意到MySQL没有将任何输出打印到屏幕上(这个过程state is Sending data)所以你键入Ctrl-C:
Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted
Ctrl-C可以类似地用于停止UPDATE查询。
Anthony Geoghegan answered 2019-02-21T14:54:36Z