代码之家  ›  专栏  ›  技术社区  ›  slashmais

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

  •  23
  • slashmais  · 技术社区  · 15 年前

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

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

    应用程序是Java Applet Servlet:用户在Applet中指定标准,将其传递给servlet,其中创建了处理程序类来处理请求。这个处理程序类是自包含的re-connect-query-disconnect to mysql。

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

    3 回复  |  直到 12 年前
        1
  •  40
  •   George Johnston    15 年前
    SHOW PROCESSLIST;
    KILL <thread_to_be_killed>;
    

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

    Show The Process List

    Kill A Running Thread

        2
  •  2
  •   GuiGS    12 年前

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

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

        3
  •  0
  •   mtmk    15 年前

    您可以通过MySQL提供的标准库发出特定于MySQL的命令并运行 KILL QUERY . 也许这是列出进程并找出需要首先杀死哪个线程的最佳方法。

    但是,这可能会造成安全问题,具体取决于您的应用程序(因为您需要给连接的应用程序用户更多的特权)。