Java 如何停止正在运行的mysql查询

Java 如何停止正在运行的mysql查询,java,mysql,applet-servlet,Java,Mysql,Applet Servlet,如何以编程方式停止正在运行的mysql查询 我面临的问题是,查询是使用用户提供的数据构造的,有时可能需要很长时间才能执行(大型表1500-3000万行)。我想为用户提供一个取消选项,但不知道如何停止当前正在执行的mysql查询 该应用程序是一个Java小程序servlet:用户在小程序中指定条件,该小程序将传递给servlet,在servlet中创建处理程序类来处理请求。这个处理程序类是自包含的到mysql的重新连接-查询-断开连接 在这种情况下,如何取消正在运行的mysql查询?ShowPro

如何以编程方式停止正在运行的mysql查询

我面临的问题是,查询是使用用户提供的数据构造的,有时可能需要很长时间才能执行(大型表1500-3000万行)。我想为用户提供一个取消选项,但不知道如何停止当前正在执行的mysql查询

该应用程序是一个Java小程序servlet:用户在小程序中指定条件,该小程序将传递给servlet,在servlet中创建处理程序类来处理请求。这个处理程序类是自包含的到mysql的重新连接-查询-断开连接

在这种情况下,如何取消正在运行的mysql查询?

ShowProcessList;
SHOW PROCESSLIST;
KILL <thread_to_be_killed>;
杀戮;
有关更多详细信息,请参阅文档


您可以通过MySQL提供的标准库发出特定于MySQL的命令并运行。可能最好列出进程,并找出需要先杀死哪个线程


但是,根据应用程序的不同,这可能会产生安全问题(因为您需要为连接的应用程序用户授予更多权限)。

需要单独的JDBC连接,这意味着您必须创建一个新的数据库处理程序实例。语句,然后循环遍历结果,并为给定用户找到的每个线程id执行一条语句


我能想到的唯一可靠的方法是,每个用户都必须使用不同的用户名登录数据库,然后获取该用户的所有线程id并杀死他们的所有线程。

小心操作,如果您正在终止一个查询,它将使您的table@slashmais你能帮我写一些代码让用户使用Javaservlet停止或终止查询吗?我也有同样的代码issue@dheerajkumar:我为一个客户端编写了代码&不再有访问权限。IIRC我通读了答案并构建了一个有效的方案。@slashmais yupp我还必须做一些其他事情,因为这会导致问题。对于这种情况,使用KILL QUERY比KILL稍微好一点。这样会终止查询,但不会终止“”中的连接引用#注释