我怎样才能停止正在运行的MySQL查询?

我从我的Linuxshell连接到mysql 。 每隔一段时间,我都会运行一个太大的SELECT查询。 它打印和打印,我已经知道这不是我的意思。 我想停止查询。

Ctrl+C (几次)完全杀死mysql并把我带回壳,所以我必须重新连接。

是否有可能停止查询而不杀死mysql本身?

 mysql>show processlist; mysql> kill "number from first col"; 

只需添加

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

如果你不想通常从某个应用程序运行的时候终止连接,那么更好。

有关更多的细节,你可以在这里阅读mysql文档

连接到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) 

使用mysqladmin来杀死失控的查询:

运行以下命令:

 mysqladmin -uusername -ppassword pr 

然后记下进程ID。

 mysqladmin -uusername -ppassword kill pid 

失控的查询不应再消耗资源。

如果你有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 | +-----+------+-----------------+--------+---------+------+--------------+------------------+ 

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

 > mysqladmin -uUSERNAME -pPASSWORD kill 137 

这个问题的作者提到,通常只有在MySQL打印输出之后,他才意识到错误的查询已经被执行了。 如上所述,在这种情况下, Ctrl-C不起作用。 但是,我注意到,它会中止当前查询 – 如果你之前打印任何输出捕获它。 例如:

 mysql> select * from jos_users, jos_comprofiler; 

MySQL忙于生成上述两个表的笛卡尔乘积,并且很快注意到MySQL没有在屏幕上输出任何输出(过程状态是发送数据 ),所以你inputCtrl-C

 Ctrl-C -- sending "KILL QUERY 113240" to server ... Ctrl-C -- query aborted. ERROR 1317 (70100): Query execution was interrupted 

Ctrl-C可以类似地用来停止UPDATE查询。