文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.8.4 KILL 陳述式

KILL [CONNECTION | QUERY] processlist_id

每個連線到 mysqld 的程序都會在個別的執行緒中執行。您可以使用 KILL processlist_id 陳述式來終止執行緒。

執行緒處理程序清單識別碼可以從 INFORMATION_SCHEMA PROCESSLIST 表格的 ID 欄位、SHOW PROCESSLIST 輸出的 Id 欄位,以及 Performance Schema threads 表格的 PROCESSLIST_ID 欄位中決定。目前執行緒的值由 CONNECTION_ID() 函數傳回。

KILL 允許使用選擇性的 CONNECTIONQUERY 修飾詞

  • KILL CONNECTION 與不帶修飾詞的 KILL 相同:它會終止與指定 processlist_id 相關聯的連線,並在終止連線正在執行的任何語句後執行。

  • KILL QUERY 會終止連線目前正在執行的語句,但會保持連線本身完整。

檢視哪些執行緒可被終止的能力取決於 PROCESS 權限。

  • 沒有 PROCESS 權限,您只能看到您自己的執行緒。

  • 擁有 PROCESS 權限,您可以看到所有執行緒。

終止執行緒和語句的能力取決於 CONNECTION_ADMIN 權限和已棄用的 SUPER 權限。

您也可以使用 mysqladmin processlistmysqladmin kill 命令來檢查和終止執行緒。

當您使用 KILL 時,會為該執行緒設定一個特定於執行緒的終止標誌。在大多數情況下,執行緒可能需要一些時間才會結束,因為終止標誌僅在特定的間隔檢查。

  • SELECT 操作期間,對於 ORDER BYGROUP BY 迴圈,該標誌會在讀取一批資料列後檢查。如果設定了終止標誌,則語句會中止。

  • 進行資料表複製的 ALTER TABLE 操作會定期檢查終止標誌,每次從原始資料表讀取一些複製的資料列。如果設定了終止標誌,則語句會中止並刪除暫存資料表。

    KILL 語句會返回而不等待確認,但終止標誌檢查會在合理的時間內中止操作。中止操作以執行任何必要的清理也需要一些時間。

  • UPDATEDELETE 操作期間,終止標誌會在讀取每個區塊後以及每次更新或刪除的資料列後檢查。如果設定了終止標誌,則語句會中止。如果您未使用交易,則不會回滾變更。

  • GET_LOCK() 會中止並返回 NULL

  • 如果執行緒處於資料表鎖定處理常式中(狀態:Locked),則資料表鎖定會快速中止。

  • 如果執行緒正在等待寫入呼叫中的可用磁碟空間,則寫入會中止並顯示 磁碟已滿錯誤訊息。

  • EXPLAIN ANALYZE 會中止並列印輸出的第一列。

警告

MyISAM 資料表上終止 REPAIR TABLEOPTIMIZE TABLE 操作會導致資料表損壞且無法使用。在您再次最佳化或修復(不中斷)之前,對此類資料表的任何讀取或寫入都會失敗。