引言:1.在MySQL client 执行某个SQL时,其强行中断可以使用ctrl+c...
2.在MySQL client 执行某个SQL时,可以另开一个窗口执行 show processlist ; kill ID; 中断SQL问题 1.ctrl+c 与(show processlist ; kill ID; ) 中断SQL是用的同一个原理吗? 如果不是.ctrl+c是怎么去中断的.
2.如果想用在程序里面中断呢.
例如: JAVA为例
当用JAVA发送一个条sql给mysql server时.
这时我想强行中断.在JAVA中能做到吗?
2.在MySQL client 执行某个SQL时,可以另开一个窗口执行 show processlist ; kill ID; 中断SQL问题 1.ctrl+c 与(show processlist ; kill ID; ) 中断SQL是用的同一个原理吗? 如果不是.ctrl+c是怎么去中断的.
2.如果想用在程序里面中断呢.
例如: JAVA为例
当用JAVA发送一个条sql给mysql server时.
这时我想强行中断.在JAVA中能做到吗?
kill 您可以选择终止连接或查询
KILL [CONNECTION | QUERY] thread_id
•KILL CONNECTION is the same as KILL with no modifier: It terminates the connection associated with the given thread_id.
•KILL QUERY terminates the statement that the connection is currently executing, but leaves the connection itself intact.
kill id 则是杀死一个id指定的进程。。
具体内部如何实现,可以去看mysql源码,看看内部实现细节
ctrl+c 等于KILL ID测试:
1:select * from table1; 列出的数据开始不断刷新DOS窗口
2:按下CTRL+C
3: NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
ULL | NULL | NULL | NULL Ctrl-C -- sending "KILL QUERY 8" to server ... |Ctrl-C -- query aborted.
4:localhost~root@localhost~cpc>select * from terminal_parameter;
ERROR 1317 (70100): Query execution was interrupted在这里可以看到,前面的那个查询进程已经被终止掉了。
原理不一样
在中取得ID,直接发KILL ID 即可
kill ID; 是在服务器端执行,是在MYSQL服务中杀掉这个连接。而ctrl+c ,是在客户端执行,这强制中止客户端的程序,然后导致MYSQL端对已断开连接进行中止。