引言: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中能做到吗?       

解决方案 »

  1.   

    Ctrl+C 应该是直接终止了mysql客户端程序;
    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. 
      

  2.   

    kill id只是让那个thread abort或者exit.
      

  3.   

    kill ID  是mysql提供的内部命令ctrl+c   是操作系统层面的 就不知道 kill id 内不是如何实现的 
      

  4.   

    当用户按下Ctrl+C键时,DOS会在屏幕上光标所在位置显示“^C”并调用中断 INT23H,立刻结束程序的执行
    kill id 则是杀死一个id指定的进程。。
    具体内部如何实现,可以去看mysql源码,看看内部实现细节
      

  5.   


    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在这里可以看到,前面的那个查询进程已经被终止掉了。
      

  6.   

    kill ID 是mysql提供的内部命令ctrl+c 是操作系统层面的
    原理不一样
    在中取得ID,直接发KILL ID 即可
      

  7.   

     楼上说得都不错。 根本的差别是。
     kill ID; 是在服务器端执行,是在MYSQL服务中杀掉这个连接。而ctrl+c ,是在客户端执行,这强制中止客户端的程序,然后导致MYSQL端对已断开连接进行中止。