top
Loading...
13.5.4.16.SHOWPROCESSLIST語法
13.5.4.16. SHOW PROCESSLIST語法
SHOW [FULL] PROCESSLIST

SHOW PROCESSLIST顯示哪些線程正在運行。您也可以使用mysqladmin processlist語句得到此信息。如果您有SUPER權限,您可以看到所有線程。否則,您只能看到您自己的線程(也就是,與您正在使用的MySQL賬戶相關的線程)。請參見13.5.5.3節,“KILL語法”。如果您不使用FULL關鍵詞,則只顯示每個查詢的前100個字符。

本語句報告TCP/IP連接的主機名稱(采用host_name:client_port格式),以方便地判定哪個客戶端正在做什么。

如果您得到“too many connections”錯誤信息,并且想要了解正在發生的情況,本語句是非常有用的。MySQL保留一個額外的連接,讓擁有SUPER權限的 賬戶使用,以確保管理員能夠隨時連接和檢查系統(假設您沒有把此權限給予所有的用戶)。

在來自SHOW PROCESSLIST的輸出中常見的一些狀態:

·         Checking table

線程正在執行(自動)表格檢查。

·         Closing tables

意味著線程正在刷新更改后的表數據,并正在關閉使用過的表。這應該是一個快速的操作。如果不快,則您應該驗證您的磁盤沒有充滿,并且磁盤沒有被超負荷使用。

·         Connect Out

連接到主服務器上的從屬服務器。

·         Copying to tmp table on disk

臨時結果集合大于tmp_table_size。線程把臨時表從存儲器內部格式改變為磁盤模式,以節約存儲器。

·         Creating tmp table

線程正在創建一個臨時表,以保持部分結果。

·         deleting from main table

服務器正在執行多表刪除的第一部分,只從第一個表中刪除。

·         deleting from reference tables

服務器正在執行多表刪除的第二部分,從其它表中刪除匹配的行。

·         Flushing tables

線程正在執行FLUSH TABLES,并正在等待所有線程,以關閉表。

·         FULLTEXT initialization

服務器正在準備執行一個自然語言全文本搜索。

·         Killed

有人已經向線程發送了一個KILL命令。在下一次檢查終止標記時,應放棄。該標記在MySQL的每個大循環中都檢查,但是在有些情況下,線程終止只需要較短的時間。如果該線程被其它線程鎖定,則只要其它線程接觸鎖定,終止操作就會生效。

·         Locked

該查詢被其它查詢鎖定。

·         Sending data

線程正在為SELECT語句處理行,同時正在向客戶端發送數據。

·         Sorting for group

線程正在進行分類,以滿足GROUP BY要求。

·         Sorting for order

線程正在進行分類,以滿足ORDER BY要求。

·         Opening tables

線程正在試圖打開一個表。這應該是非常快的過程,除非打開操作受到阻止。例如,一個ALTER TABLE或一個LOCK TABLE語句可以阻止打開一個表,直到語句完成為止。

·         Removing duplicates

查詢正在使用SELECT DISTINCT。使用時,在早期階段,MySQL不能優化不同的操作。因此,MySQL要求一個額外的階段,以便在把結果發送給客戶端之前取消所有的復制行。

·         Reopen table

線程得到一個表鎖定,但是在得到鎖定后被通知帶下方的表結構已更改了。它已經釋放了鎖定,關閉了表,并試圖重新打開它。

·         Repair by sorting

修復代碼正在使用一個分類來創建索引。

·         Repair with keycache

修復代碼正在通過關鍵緩存一個接一個地使用創建關鍵字。這比通過分類修復要慢很多。

·         Searching rows for update

線程正在進行第一階段,以在更新之前,查找所有匹配的行。如果UPDATE正在更改用于查找相關行的索引,則必須這么做。

·         Sleeping

線程正在等待客戶端,以向它發送一個新語句。

·         System lock

線程正在等待得到一個用于表的外部系統鎖定。如果您沒有正在使用多個正在訪問同一個表的mysqld服務器,則您可以使用--skip-external-locking選項禁用系統鎖定。

·         Upgrading lock

INSERT DELAYED管理程序正在試圖得到一個表鎖定,以插入行。

·         Updating

線程正在搜索行,并正在更新這些行。

·         User Lock

線程正在等待GET_LOCK()

·         Waiting for tables

線程得到一個通知,表的底層結構已經改變,需要重新打開表以得到新的結構。但是,為了能重新打開表,必須等待,直到所有其它的線程已經關閉了正在被質詢的表。

如果其它線程已經對正在被質詢的表使用了FLUSH TABLES或以下語句之一:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLEOPTIMIZE TABLE;則會出現通知。

·         waiting for handler insert

INSERT DELAYED管理程序已經處理了所有處于等待狀態的插入,并正在等待新插入。

多數狀態對應于非常快的操作。如果一個線程在這些狀態下停留了數秒,則可能是有問題,需要進行調查。

有一些其它的狀態,在前面的清單中沒有提及,但是其中有很多狀態對于查找服務器中的程序錯誤是有用的。

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