MySQL show processlist 2 Command State

 

  • 線程的 Command 值

 

Binlog Dump 這是主庫上的一個線程,用於將二進制日誌內容發送到 從庫
Change user 線程正在執行更改用戶操作
Close stmt 線程正在關閉一個預編譯好的語句
Connect 從庫線程已經連接到主庫
Connect Out 從庫正在連接到主庫
Create DB 線程正在執行一個建庫操作
Daemon 這個是 server 內部線程,不是客戶端連接的線程
Debug 線程正在生成調試信息
Delayed insert 是一個延遲插入處理程序的線程
Drop DB 線程正在執行 drop database 操作
Error  
Execute 線程正在執行一個預編譯好的語句
Fetch 線程正在執行語句並從中獲取結果集
Field List 線程正在檢索表列的信息
Init DB 線程正在選擇默認數據庫
kill 線程正在殺死其他線程
Long Data 線程在執行語句並從中檢索並返回長字段(大字段)類型 的數據結果集
Ping 線程正在處理服務器 ping 請求
Prepare 線程正在執行預編譯一個語句
Processlist 線程正在生成有關 server 線程的信息
Query 線程正在執行查詢語句
Quit 線程正在終止
Refresh 線程正在刷新表,日誌或高速緩存,或重置狀態變量或複製 server 信息
Register Slave 線程正在主庫上註冊從庫
Reset stmt 線程正在重置預編譯語句
Set option 線程正在設置或重置客戶端語句執行選項
Shutdown 線程正在執行關閉 server
Sleep 線程正在等待客戶端向其發送一個新語句請求
Statistics 線程正在生成 server 狀態信息
Table Dump 線程正在將表內容發送到從庫
Time 當前未使用
   

 

  • 普通線程狀態 非內部機制創建的線程

 

After create 當線程創建一個表完成時,包括內部臨時表,會出現這種狀態,如果建表失敗也會出現
Analyzing 線程正在計算 MyISAM 表的 key 分佈 ANALYZE TABLE
checking permissions 正在 server 中檢查線程是否具有執行 語句所需的權限
Checking table 線程正在執行表檢查操作
cleaning up 線程已經執行完成了一個命令,並準備釋放所佔用 的內存和重置某些狀態變量
closing tables 線程正在將表發生更改的數據刷新到磁盤並關閉 表。通常情況下這個操作很快。否則,請檢查磁盤空間是否滿 了,或者磁盤的負載是否比較高
converting HEAP to MyISAM 線程正在將內部臨時表從 MEMORY 引擎錶轉換爲磁盤 MyISAM 引擎的臨時表
copy to tmp table :線程正在執行 ALTER TABLE 語句。此狀態 發生在新結構的表已經創建好之後,執行 copy 舊錶數據到新表 中之前出現,這裏對於線程的具體執行詳情,可以使用 performance_schema 庫來獲取有關 copy 操作的進度信息
Copying to group table 如果語句使用了不同的 ORDER BY 和 GROUP BY 條件列,則按照 group by 對這些行數據進行排 序,並將排序結果複製到臨時表
Copying to tmp table server 正在複製數據到內存臨時表
altering table server 正在執行 in-place 算法的 ALTER TABLE 的過程
Copying to tmp table on disk server 正在複製數據到磁盤臨 時表。因爲臨時結果集太大,所以,線程正在將內存臨時錶轉換 爲基於磁盤的臨時表,以節省內存
Creating index 線程正在執行一個 MyISAM 表的 ALTER TABLE ... ENABLE KEYS 語句
Creating sort index 線程正在執行 SELECT 且使用到了內部臨 時表
creating table 線程正在創建表。包括創建臨時表時也會使用 此狀態
Creating tmp table 線程正在內存或磁盤上創建一個臨時表。 如果表在內存中創建,但後來被轉換爲磁盤表,則該操作期間的 狀態將爲“Copying to tmp table on disk”
committing alter table to storage engine server 已執行完 成 in-place 算法的 ALTER TABLE 語句,正在提交
deleting from main table server 正在執行多表刪除語句中的 第一部分。看到這個狀態表示正在從第一個表中刪除,並保存後 續用於刪除其他表的列數據和偏移量
deleting from reference tables server 正在執行多表刪除語 句的第二部分,從其他表(非第一個表)中刪除匹配的行
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 線程正在執行一個初始化系統變 量的語句
freeing items 線程已經執行完成了一個命令。釋放一些涉及到 query cache 狀態的 items。這種狀態後通常緊隨 cleaning up 狀態之後
FULLTEXT initialization server 正在準備執行自然語言全文搜 索
init :這在 ALTER TABLE,DELETE,INSERT,SELECT 或 UPDATE 語句初始化之前發生的狀態。server 在此狀態下執行的 操作包括刷新二進制日誌,InnoDB 日誌和一些查詢緩存清理操 作。對於這個狀態結束時,可能會有如下一些操作:
* 當表中的數據更改後刪除查詢緩存條目
* 將事件寫入二進制日誌
* 釋放內存緩衝區,包括 blob
Killed 向線程發起一個 kill 操作,線程應該執行終止操作。在 MySQL 的每個主循環中檢查線程的 kill 標誌,但在某些情況下, 殺死線程可能只需要很短的時間。但如果被 kill 的線程被其他線 程鎖定,則需要等待其他線程釋放鎖之後,kill 命令纔會生效並 執行
logging slow query 線程正在向慢查詢日誌寫一條語句
login 連接線程的初始狀態,直到客戶端成功通過身份驗證
manage keys server 正在啓用或禁用表索引
NULL 此狀態用於 SHOW PROCESSLIST 語句
Opening tables 線程正嘗試打開一個表。打開表操作應該非常 快,除非打開操作被阻止。例如,ALTER TABLE 或 LOCK TABLE 語句可以防止打開表,直到該語句完成。另外也可能是 table_open_cache 不夠大導致不能打開表
optimizing server 正在對查詢執行初始優化
preparing 此狀態發生在查詢優化期間
Purging old relay logs 線程正在刪除不需要的中繼日誌文件 o query end:此狀態出現在執行查詢語句之後但在釋放該查詢語 句相關狀態 items 之前
Reading from net server 正在從網絡讀取數據包。在 MySQL 5.7.8 之後該狀態叫做“Receiving from client ”
Receiving from client server 正在從客戶端讀取數據包。在 MySQL 5.7.8 叫做“Reading from net ”
Removing duplicates 查詢使用 SELECT DISTINCT 語句時, 使 MySQL 無法在早期階段優化掉 distinct 操作。因此,MySQL 需要一個額外的階段來刪除所有重複的行,然後將結果發送到客 戶端
removing tmp table 線程在 SELECT 語句執行完成後,正在刪 除內部臨時表。如果 SELECT 語句未創建臨時表,則不會出現此 狀態
rename 線程正在執行 rename 語句重命名錶
rename result table 線程正在執行 ALTER TABLE 語句重命名 表,已經創建完成新表,並正在使用新表替換舊錶名稱
Reopen tables 線程獲得了表鎖,但是獲得鎖後,發現基礎表 結構已經被改變了。於是釋放表鎖,並關閉表,嘗試重新打開表
Repair by sorting 修復代碼正在使用排序來創建索引
preparing for alter table server 正在準備執行 in-place 算法 的 ALTER TABLE 語句
Repair done 該線程已完成 MyISAM 表的多線程修復
Repair with keycache 修復代碼正在使用通過 key cache 逐個 創建 key 的方法修復索引。這比通過排序索引修復的方法慢得多
Rolling back 線程正在回滾事務
Saving state 對於 MyISAM 表操作(如修復或分析),線程正 在將新表狀態保存到.MYI 文件頭。狀態包括:表數據行數, AUTO_INCREMENT 計數器和 key 分佈之類的信息
Searching rows for update 線程正在進行第一階段查找所有 匹配的行,然後再更新它們。如果 UPDATE 正在更改用於查找涉 及的行的索引,則必須先把 update 滿足匹配的行先查找出來
Sending data 線程正在讀取和處理 SELECT 語句產生的數據 行,並將數據發送到客戶端。因爲在此狀態期間發生的操作可能 產生大量的磁盤訪問(讀取),所以它通常是給定查詢的生存期 內最長的運行狀態
Sending to client server 正在向客戶端寫入數據包。在 MySQL 5.7.8 之前叫做“Writing to net”
setup 線程正在執行 ALTER TABLE 操作
Sorting for group 線程正在執行一個 GROUP BY 排序操作
Sorting for order 線程正在執行一個 ORDER BY 排序操作
Sorting index 線程正在排序索引頁面,以便在 MyISAM 表優 化操作期間實現更高效的訪問
Sorting result 對於 SELECT 語句,這類似於“Creating sort index”狀態,但是針對於非臨時表
statistics server 正在計算統計信息以優化查詢執行計劃。如果 一個線程在這個狀態很長一段時間,server 可能是磁盤執行其他 工作而阻塞了統計信息的操作,也有可能發生了鎖等待。
System lock 線程調用了 mysql_lock_tables(),線程狀態從未 更新過。這是一個非常常見的狀態,出現該狀態的原因有很多。 例如,線程將請求或正在等待表的內部或外部系統鎖定。當 InnoDB 在執行 LOCK TABLES 期間等待表級鎖時,可能會發生 這種情況。如果此狀態是由外部鎖請求引起的,如果您不使用多 個 mysqld 服務器訪問同一 MyISAM 表,則可以使用--skipexternal-locking 選項禁用外部系統鎖。但是,默認情況下外部 鎖定是禁用的,因此此選項可能無效。對於 SHOW PROFILE, 此狀態表示線程正在請求鎖定(不等待)
update 線程準備開始更新表
Updating 線程搜索且正在更新數據行
updating main table server 正在執行多表更新語句的第一部 分。該狀態表示正在更新第一個表,並保存列值和偏移量以用於 更新其他(引用)表
updating reference tables server 正在執行多表更新語句的第 二部分,更新其他表的匹配行
User lock 線程將請求或正在等待通過 GET_LOCK() 調用請求 的建議鎖。對於 SHOW PROFILE,此狀態表示線程正在請求鎖 定(無需等待)
User sleep 線程已調用 SLEEP() 調用
Waiting for commit lock FLUSH TABLES WITH READ LOCK 語句正在獲取提交鎖
Waiting for global read lock FLUSH TABLES WITH READ LOCK 正在等待獲取全局讀鎖或全局 read_only 系統變量設置
Waiting for tables 線程獲取到一個通知,表的底層結構已經改 變,它需要重新打開表以獲得新的結構。但是,要重新打開表, 它必須等待,直到所有其他線程都關閉了舊數據結構的表的訪 問。如果另一個線程已在表中使用 FLUSH TABLES 或下列語句之 一,則就會出現這個通知:
* FLUSH TABLES tbl_name
* ALTER TABLE
* RENAME TABLE
* REPAIR TABLE
* ANALYZE TABLE
* OPTIMIZE TABLE
Waiting for table flush 線程正在執行 FLUSH TABLES,並且 正在等待所有線程關閉所訪問的表,或者線程得到一個表的底層 結構已經改變的通知,它需要重新打開表以獲得新的結構。但 是,要重新打開表,它必須等待,直到所有其他線程都關閉了舊 表結構的訪問。如果另一個線程已在表中使用 FLUSH TABLES 或 下列語句之一,則就會出現這個通知:
* FLUSH TABLES tbl_name
* ALTER TABLE
* RENAME TABLE
* REPAIR TABLE
* ANALYZE TABLE
* OPTIMIZE TABLE
Waiting for lock_type lock server 正在等待獲得一個 THR_LOCK 鎖或者從元數據鎖定子系統中獲取一個 MDL 鎖,其 中 lock_type 表示正在等待獲得的 MDL 鎖的類型,THR_LOCK 只有一種(Waiting for table level lock),MDL 鎖有如下幾 種:
* Waiting for event metadata lock
* Waiting for global read lock
* Waiting for schema metadata lock
* Waiting for stored function metadata lock
* Waiting for stored procedure metadata lock * Waiting for table metadata lock * Waiting for trigger metadata lock
Waiting on cond 線程正在等待條件變爲 true 的通用狀態。沒 有特定的狀態信息可用
Writing to net server 正在向網絡寫入數據包。從 MySQL 5.7.8 之後叫做“Sending to client”

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章