通過show processlist查看MySQL的進程狀態,在State列上面的狀態有如下這些:
Analyzing
線程對MyISAM 表的統計信息做分析(例如, ANALYZE TABLE )。
checking permissions
線程檢查服務器是否具有所需的權限來執行該語句。
Checking table
線程正在執行表檢查操作。
cleaning up
線程處理一個命令,並正准備釋放內存和重置某些狀態變量。
closing tables
線程改變表中的數據刷新到磁盤和關閉使用的表。
converting HEAP to MyISAM
線程從轉換內部臨時表MEMORY內存表到磁盤MyISAM表。
copy to tmp table
線程正在處理一個ALTER TABLE語句。
Copying to group table
如果語句有不同的ORDER BY和GROUP BY標准,按組排序並復制到一個臨時表。
Copying to tmp table
服務器復制到內存中的臨時表。
Copying to tmp table on disk
服務器復制到一個臨時表在磁盤上。
Creating index
線程正在處理ALTER TABLE ... ENABLE KEYS。
Creating sort index
線程正在處理一個SELECT,使用內部臨時表解決。
creating table
線程創建一個表, 這包括建立臨時表。
Creating tmp table
線程創建一個臨時表在內存或磁盤上。 如果表是在內存中創建,但后來被轉換成一個磁盤上的表,在該操作狀態為Copying to tmp table on disk。
deleting from main table
服務器正在執行多表刪除的第一部分。 它只能從第一個表中刪除,並保存列和刪除從其他表(參考)偏移。
deleting from reference tables
服務器正在執行多表刪除的第二部分,從其他表中刪除匹配的行。
discard_or_import_tablespace
線程正在處理一個ALTER TABLE ... DISCARD TABLESPACE或ALTER TABLE ... IMPORT TABLESPACE語句。
end
這發生在最后的清理工作,有ALTER TABLE , CREATE VIEW , DELETE , INSERT , SELECT或UPDATE語句。
executing
線程已開始執行語句。
Execution of init_command
線程正在執行中的init_command系統變量。
freeing items
線程已執行的命令。 釋放一些在這種狀態下完成的項目,涉及的查詢緩存。 這種狀態通常后跟cleaning up 。
Flushing tables
線程正在執行FLUSH TABLES ,等待所有線程關閉其表。
FULLTEXT initialization
該服務器是准備執行一個自然語言的全文檢索。
init
在發生之前的初始化ALTER TABLE , DELETE , INSERT , SELECT或UPDATE語句。 服務器在這種狀態下采取的行動包括沖洗二進制日志中InnoDB日志,和一些查詢緩存清理操作。
Killed
有人發送一個KILL線程的語句,它應該中止在下一次檢查殺死標志。
Locked
查詢被鎖定由另一個查詢。
logging slow query
線程正在寫慢查詢日志的語句。
NULL
這種狀態是用於SHOW PROCESSLIST狀態。
login
連接線程的初始狀態,直到客戶端已成功通過身份驗證。
Opening tables , Opening table
線程試圖打開一個表。 這應該是非常快的過程中,除非有阻止打開。
optimizing
服務器執行查詢的初始優化。
preparing
這種狀態出現在查詢優化過程中。
Purging old relay logs
線程是消除不必要的中繼日志文件。
query end
這種狀態發生后處理查詢,但在此freeing items的項目狀態。
Reading from net
服務器讀網絡數據包。
Removing duplicates
查詢使用SELECT DISTINCT在這樣一種方式。 MySQL需要一個額外的的階段,將結果發送到客戶端之前刪除所有重復行。
removing tmp table
線程移除臨時表。 如果沒有創建臨時表,這種狀態是不使用。
rename
線程重命名表。
rename result table
線程正在處理一個ALTER TABLE語句,創建新表並重新命名它來取代原來的表。
Reopen tables
線程有一個表鎖,並試圖重新打開它。
Repair by sorting
使用排序修復索引。
Repair done
修復完成。
Repair with keycache
修復使用鍵緩存。用於myisam表,出現該狀態應加大myisam_max_sort_file_size。
Rolling back
回滾事務。
Saving state
保存狀態。
Searching rows for update
線程做第一階段前更新他們找到所有匹配的行。
Sending data
線程處理一個SELECT語句,將數據發送到客戶端。 因為在這個狀態發生的操作往往執行大量的磁盤訪問(讀取),查詢的生命周期最長的運行狀態。
setup
線程開始一個ALTER TABLE操作。
Sorting for group
線程做一個分組。
Sorting for order
線程做ORDER BY排序。
Sorting index
線程排序索引,更高效的訪問MyISAM表的優化操作。
Sorting result
對於SELECT語句,這是Creating sort index類似,但不用臨時表。
statistics
服務器計算統計數據,以制定一個查詢執行計划。 如果一個線程處於這種狀態很長一段時間,可能是磁盤在執行其他工作。
System lock
該線程正在等待內部或外部的系統鎖表。 可以與外部系統--skip-external-locking鎖定選項。
Table lock
線程要求內部表鎖。
Updating
線程正在尋找要更新的行。
updating main table
服務器正在執行多表更新的第一部分,它只更新第一個表。
updating reference tables
服務器正在執行多表更新的第二部分。
User lock
線程請求或要求與鎖等待GET_LOCK()調用。
Waiting for release of readlock
線程正在等待另一個線程的鎖被釋放。
Waiting for tables , Waiting for table
線程得到一個表的基本結構發生了變化的通知,它需要重新打開表,以獲取新的結構。 必須等到所有其他線程已經關閉表。
如果另一個線程已FLUSH TABLES或表執行下面的語句:FLUSH TABLES tbl_name、ALTER TABLE、RENAME TABLE、REPAIR TABLE、ANALYZE TABLE、OPTIMIZE TABLE。
Waiting on cond
在該線程正在等待一個條件。
Waiting to get readlock
線程已發出一個FLUSH TABLES WITH READ LOCK語句獲得全局讀鎖,並正在等待獲取鎖。
Writing to net、waiting for net
服務器寫一個數據包活等待網絡,要是大量出現請迅速檢查數據庫到前端的網絡連接狀態和流量。
-- 查詢語句
SELECT * FROM information_schema.PROCESSLIST WHERE state != '';
------------------------------------------
轉自:https://www.cnblogs.com/yum777/p/6425449.html