top
Loading...
13.5.5.3.KILL語法
13.5.5.3. KILL語法
KILL [CONNECTION | QUERY] thread_id

每個與mysqld的連接都在一個獨立的線程里運行,您可以使用SHOW PROCESSLIST語句查看哪些線程正在運行,并使用KILL thread_id語句終止一個線程。

KILL允許自選的CONNECTIONQUERY修改符:

·         KILL CONNECTION與不含修改符的KILL一樣:它會終止與給定的thread_id有關的連接。

·         KILL QUERY會終止連接當前正在執行的語句,但是會保持連接的原狀。

如果您擁有PROCESS權限,則您可以查看所有線程。如果您擁有SUPER權限,您可以終止所有線程和語句。否則,您只能查看和終止您自己的線程和語句。

您也可以使用mysqladmin processlistmysqladmin kill命令來檢查和終止線程。

注釋:您不能同時使用KILLEmbedded MySQL Server庫,因為內植的服務器只運行主機應用程序的線程。它不能創建任何自身的連接線程。

當您進行一個KILL時,對線程設置一個特有的終止標記。在多數情況下,線程終止可能要花一些時間,這是因為終止標記只會在在特定的間隔被檢查:

·         SELECT, ORDER BYGROUP BY循環中,在讀取一組行后檢查標記。如果設置了終止標記,則該語句被放棄。

·         ALTER TABLE過程中,在每組行從原來的表中被讀取前,檢查終止標記。如果設置了終止標記,則語句被放棄,臨時表被刪除。

·         UPDATEDELETE運行期間,在每個組讀取之后以及每個已更行或已刪除的行之后,檢查終止標記。如果終止標記被設置,則該語句被放棄。注意,如果您正在使用事務,則變更不會被 回滾。

·         GET_LOCK()會放棄和返回NULL

·         INSERT DELAYED線程會快速地刷新(插入)它在存儲器中的所有的行,然后終止。

·         如果線程在表鎖定管理程序中(狀態:鎖定),則表鎖定被快速地放棄。

·         如果在寫入調用中,線程正在等待空閑的磁盤空間,則寫入被放棄,并伴隨"disk full"錯誤消息。

·         警告:對MyISAM表終止一個REPAIR TABLEOPTIMIZE TABLE操作會導致出現一個被損壞的沒有用的表。對這樣的表的任何讀取或寫入都會失敗,直到您再次優化或修復它(不中斷)。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
北斗有巢氏 有巢氏北斗