我怎样才能停止正在运行的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
查询。