我从Linux shell连接到mysql
。我不时地运行一个太大的SELECT
查询。它打印和打印,我已经知道这不是我的意思。我想停止查询。
点击Ctrl+C
(几次)完全杀死mysql
并将我带回shell,所以我必须重新连接。
是否可以在不杀死mysql
的情况下停止查询?
答案 0 :(得分:417)
mysql>show processlist;
mysql> kill "number from first col";
答案 1 :(得分:64)
只是添加
KILL QUERY **Id**
其中Id是来自show processlist
。
有关详细信息,请阅读mysql doc here
答案 2 :(得分:38)
连接到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)
答案 3 :(得分:12)
使用mysqladmin
来终止失控查询:
运行以下命令:
mysqladmin -uusername -ppassword pr
然后记下流程ID。
mysqladmin -uusername -ppassword kill pid
失控查询应该不再消耗资源。
答案 4 :(得分:9)
如果您有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
答案 5 :(得分:1)
您需要运行以下命令来终止该进程。
> show processlist;
> kill query processId;
查询参数指定我们需要终止查询命令过程。
kill过程的语法如下
杀死[连接| QUERY] processlist_id
请refer此链接以获取更多信息。
答案 6 :(得分:0)
这个问题的作者提到它通常只在之后
MySQL打印输出,他意识到执行了错误的查询。
如上所述,在这种情况下,Ctrl-C
没有帮助。但是,我注意到了它
将中止当前查询 - 如果您在 任何输出之前捕获它
打印。例如:
mysql> select * from jos_users, jos_comprofiler;
MySQL忙于生成上述两个表的笛卡尔积
你很快就会注意到MySQL没有将任何输出打印到屏幕上(这个过程
state is 发送数据),因此您键入Ctrl-C
:
Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted
Ctrl-C
可以类似地用于停止UPDATE
查询。