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

2022-09-01 20:32:38

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

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

该应用程序是一个Java小程序-servlet:用户在小程序中指定条件,该小程序被传递给servlet,其中创建了一个处理程序类来处理请求。此处理程序类是独立的 re connect - query - disconnect to mysql。

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


答案 1
SHOW PROCESSLIST;
KILL <thread_to_be_killed>;

有关其他详细信息,请参阅文档

显示进程列表

终止正在运行的线程


答案 2

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

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


推荐