如何停止正在运行的MySQL查询?

Dav*_*d B 241 mysql kill processlist

mysql从我的Linux shell 连接到.我不时地运行一个SELECT太大的查询.它打印和打印,我已经知道这不是我的意思.我想停止查询.

击中Ctrl+C(几次)mysql完全杀死并带我回到外壳,所以我必须重新连接.

是否可以在不自杀的情况下停止查询mysql

bak*_*048 437

mysql>show processlist;

mysql> kill "number from first col";
Run Code Online (Sandbox Code Playgroud)

  • 我同意这种基本方法,但我认为在这种情况下,使用"KILL QUERY"稍微优于"KILL".这样查询就被终止了,但连接却没有. (32认同)
  • 但是`mysql`正在打印......我看不到提示 (5认同)
  • 如果您的进程列表滚过缓冲区,则有用的提示是设置寻呼机.只需在提示符下输入'\ P more'.点击此处查看更多信息http://www.dbasquare.com/2012/03/28/how-to-work-with-a-long-process-list-in-mysql/ (3认同)
  • 如果在 AWS RDS 上使用 MySQL,您将无权运行 `KILL`,但可以运行:`CALL mysql.rds_kill(12345)` (3认同)

mta*_*riq 68

只是补充一下

KILL QUERY **Id** 其中Id是来自的连接ID show processlist

如果您不希望在从某个应用程序运行时通常终止连接,则更为可取.

有关更多详细信息,请在此处阅读mysql doc


min*_*s23 40

连接到mysql

mysql -uusername -p  -hhostname
Run Code Online (Sandbox Code Playgroud)

显示完整的流程清单:

mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id      | User   | Host              | db      | Command | Time | State | Info             |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query   |    0 | NULL  | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
Run Code Online (Sandbox Code Playgroud)

杀死特定查询.这里id = 9255451

mysql> kill 9255451;
Run Code Online (Sandbox Code Playgroud)

如果您获得权限被拒绝,请尝试以下SQL:

CALL mysql.rds_kill(9255451)
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果使用AWS RDS实例,则需要最后一次查询. (11认同)

min*_*s23 12

用于mysqladmin终止失控查询:

运行以下命令:

mysqladmin -uusername -ppassword pr
Run Code Online (Sandbox Code Playgroud)

然后记下进程ID.

mysqladmin -uusername -ppassword kill pid
Run Code Online (Sandbox Code Playgroud)

失控查询应该不再消耗资源.


Rud*_*tae 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 |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
Run Code Online (Sandbox Code Playgroud)

然后你可以停止托管长时间运行查询的mysql进程:

> mysqladmin -uUSERNAME -pPASSWORD kill 137
Run Code Online (Sandbox Code Playgroud)


Shi*_*bde 5

您需要运行以下命令来终止该进程。

> show processlist;  
> kill query processId;
Run Code Online (Sandbox Code Playgroud)

查询参数指定我们需要杀死查询命令的过程。

kill过程的语法如下

杀死[连接| QUERY] processlist_id

参考此链接以获取更多信息。