MySQL -- show processlist

來源:互聯網
上載者:User

標籤:distinct   init   create   alter   不同   釋放   匹配   man   kill   

mysql> show full processlist或者mysql> show processlist;+---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+| Id      | User      | Host              | db       | Command     | Time    | State                  | Info                                  |+---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+| 3672856 | abce      | 192.168.5.1:38311 | abce     | Query       |       0 | Sending data           | select count(1) from (select          +---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+

說明:

ID:id標識。kill使用者的時候有用User:當前串連的使用者Host:目前使用者串連是從哪個ip和port串連過來的db:資料庫名Command:串連狀態,一般是休眠(sleep),查詢(query),串連(connect)Time:串連持續的時間,單位是秒State:當前sql語句的狀態Info:sql語句內容

 

其中state的狀態十分關鍵,下表列出state主要狀態和描述: 

狀態 說明 建議
After create

當線程建立一個表(包括暫存資料表),建立函數結束時的狀態。
即使因為某些原因建立失敗,也會顯示。

 
Analyzing 線程正在估算myisam表的鍵的分布  
checking permissions 許可權檢查  
Checking table 檢查表  
cleaning up 命令結束,準備釋放記憶體和重設狀態變數  
closing tables

重新整理表資料到磁碟並關閉表。
這個狀態一般比較快,否則就該查看一下磁碟的使用了

 
converting HEAP to MyISAM 將內部記憶體暫存資料表轉成成磁碟上的myisam表  
copy to tmp table

線程在執行alter table命令。
發生在表結構已經修改,但是資料還沒有拷貝回去

建議:淩晨執行
altering table 原地執行alter table命令  
Copying to tmp table 從記憶體將資料拷貝到暫存資料表 建議:建立索引
Copying to group table 如果語句的order by和group by列不同,行被分組排序並拷貝到暫存資料表  
Copying to tmp table on disk

拷貝到磁碟上的暫存資料表。
臨時結果集太大,因為線程要將記憶體中的資料拷貝到磁碟上以便節省記憶體。

建議:建立索引,加大tmp_table_size/max_heap_table_size
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 原理alter table結束,提交結果  
deleting from main table

在執行多表刪除的第一部分。
只是從第一個表中刪除,會儲存列和位移量用於刪除其他表

 
deleting from reference tables 多表刪除的第二部分,從其他表刪除匹配的行  
discard_or_import_tablespace 線程在處理alter table … discard tablespace或alter table … import tablespace  
freeing items 線程已經執行完一個命令。釋放一些items  
FULLTEXT initialization 準備執行全完檢索  
Removing duplicates 查詢使用了distinct  
removing tmp table 移除內部暫存資料表  
Reading from net server端正通過網路讀取用戶端發送過來的請求 建議:減小用戶端發送資料包大小,提高網路頻寬/品質
Sending data 從server端發送資料到用戶端,也有可能是接收儲存引擎層返回的資料,再發送給用戶端,資料量很大時尤其經常能看見 建議:通過索引或LIMIT,減少需要掃描的資料量
Sorting result 正在對結果進行排序,類似Creating sort index,不過是正常表,而不是在記憶體表中進行排序 建議:建立索引
Statistics 進行資料統計以便解析執行計畫,如果狀態比較經常出現,有可能是磁碟IO效能很差 建議:查看當前io效能狀態,例如iowait
System lock 正在等待系統級鎖 建議:關閉外部鎖skip-external-locking(已經預設關閉了)
Waiting for global read lock 通常是FLUSH TABLES WITH READ LOCK整等待全域讀鎖  

Waiting for tables,
或Waiting for table flush

通常是因為FLUSH TABLES, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE等需要重新整理表結構並重新開啟  

MySQL -- show processlist

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.