文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國 Letter) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.8.4 KILL 陳述式

KILL [CONNECTION | QUERY] processlist_id

每個連線到 mysqld 的操作都會在獨立的執行緒中進行。您可以使用 KILL processlist_id 陳述式來終止執行緒。

執行緒程序清單識別碼可以從 INFORMATION_SCHEMAPROCESSLIST 表格的 ID 欄位、SHOW PROCESSLIST 輸出的 Id 欄位以及效能架構的 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 作業會導致表格損毀且無法使用。在您再次最佳化或修復(不中斷)之前,對此類表格的任何讀取或寫入都會失敗。