簡體   English   中英

如何停止正在運行的mysql查詢

[英]How to stop a running mysql query

如何以編程方式停止正在運行的mysql查詢?

我面臨的問題是使用用戶提供的數據構建查詢,並且可能偶爾需要很長時間才能執行(大表15到3000萬行)。 我想為用戶提供一個取消選項,但不知道如何停止當前正在執行的mysql查詢。

該應用程序是一個Java applet-servlet:用戶在applet中指定條件,該條件傳遞給servlet,在servlet中創建一個處理程序類來處理請求。 這個handler-class是自包含的re connect - query - disconnect to mysql。

鑒於這種情況,如何取消正在運行的mysql查詢?

SHOW PROCESSLIST;
KILL <thread_to_be_killed>;

有關其他詳細信息,請參閱文檔

顯示流程列表

殺死正在運行的線程

需要單獨的JDBC連接,這意味着您必須創建新的數據庫處理程序實例。 執行SHOW PROCESSLIST語句,然后遍歷結果並為給定用戶找到的每個線程ID執行KILL語句。

我能想到的唯一可靠的方法是每個用戶都必須使用不同的用戶名登錄數據庫,然后獲取該用戶的所有線程ID並終止所有線程。

您可以通過MySQL提供的標准庫發出MySQL特定命令並運行KILL QUERY 可能最好列出流程並確定首先需要殺死哪個線程。

根據您的應用程序,這可能會產生安全問題(因為您需要為連接的應用程序用戶提供更多權限)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM