天天看點

mysql show processlist 指令詳解

這個指令中最關鍵的就是state列,mysql列出的狀态主要有以下幾種:

狀态

含義

After create

當線程建立表(包括臨時表)

Analyzing

線程正在分析MYISAM的key分布

checking permissions

線程正在檢查執行語句的權限

Checking table

線程正在執行表check操作

cleaning up

線程已經處理完一個指令然後開始準備釋放記憶體和reset狀态變量

closing tables

線程把改變的表資料flush到磁盤然後關閉使用的表。這個操作應該是很快的,如果這個狀态長時間出現,要留意檢查磁盤的狀态。

<code>converting HEAP to MyISAM</code>

把一個記憶體中的臨時表轉換到磁盤上的MYISAM表

copy to tmp table

線程執行alter table語句。這個狀态出現在新的表結構已經建立但資料還在拷貝到新表之前。

<code>Copying to group table</code>

如果一個語句的group by和order by 條件不同,資料通過group by來排序然後拷貝到臨時表

Copying to tmp table

拷貝到記憶體中的臨時表

<code>Copying to tmp table on disk</code>

如果臨時表過大,伺服器要把記憶體中的臨時表拷貝到磁盤。

Creating index

對一個MYISAM 執行<code>ALTER TABLE ... ENABLE KEYS</code>

<code>Creating sort index</code>

線程通過執行一個臨時表來執行select語句

creating table

線程正在建立表(包括臨時表)

<code>Creating tmp table</code>

建立臨時表(在記憶體或者磁盤)上,如果表一開始在記憶體中到後面太大,臨時表就會轉換到磁盤上,而且狀态也會變成<code>Copying to tmp table on disk</code>

deleting from main table

伺服器正在執行一個多表delete語句的第一部分,也就是從第一張表删除資料,并且保留行以及偏移量資料以用來删除其他表中的資料。

<code>deleting from reference tables</code>

伺服器正在執行一個多表delete語句的二部分

discard_or_import_tablespace

線程正在執行<code>ALTER TABLE ... DISCARD TABLESPACE</code> 或者<code>ALTER TABLE ... IMPORT TABLESPACE</code> 語句.

end

這個狀态出現在<code>ALTER TABLE</code>, <code>CREATE VIEW</code>, <code>DELETE</code>, <code>INSERT</code>, <code>SELECT</code>, <code>UPDATE語句結束之後,但在清理以前。</code>

executing

線程開始執行一個語句

Execution of init_command

線程在init_command系統變量中執行語句

freeing items

線程已經執行指令。一些釋放

Flushing tables

這個線程執行了<code>FLUSH TABLES,而且等待所有的線程關閉表</code>

<code>FULLTEXT initialization</code>

伺服器準備執行文本搜尋

init

Killed

發送了kill 語句給這個查詢。這個語句在下次檢查kill标志的時候,這個語句就應該放棄掉

Locked

查詢被其他的查詢鎖住了

logging slow query

線程正在把慢sql寫到慢查詢log檔案中

NULL

login

直到線程授權成功以前都是這個狀态

manage keys

伺服器正在卡哭泣或者關閉表的索引

<code>Opening tables</code>, <code>Opening table</code>

線程正在打開表。這個操作是很快的,除非有其他原因阻止了打開操作,例如<code>ALTER TABLE</code>   <code>LOCK TABLE</code>

optimizing

伺服器正在進行一個查詢的初始階段優化

preparing

正在進行查詢優化

Purging old relay logs

線程删除不需要的relay log檔案

query end

這個狀态出現在處理完以後但在當機item之前

Reading from net

伺服器從網絡讀取包

<code>Removing duplicates</code>

查詢使用了select distinct。mysq在發送資料到用戶端之前需要一個額外的過程來删除重複的行

removing tmp table

在執行了select語句以後,線程正在删除内部的臨時表

rename

線程正在重命名表

rename result table

線程正在執行一個alter table語句,而且已經建立了新表,對新表重命名來替換原始表。

Reopen tables

線程擷取了一個表的鎖。由于它已經得知它依賴的表結構已經發生了變化。線程需要釋放鎖、關閉表、然後嘗試重新打開他。

Repair by sorting

修複代碼通過排序來建立索引。

Repair done

線程完成了對一個myisam表的多線程修複。

Repair with keycache

修複代碼正在通過key的緩存建立key。

Rolling back

線程正在復原事物。

Saving state

myisam的analysis和repair操作中,線程會把表的一些資訊例如表的行數、<code>AUTO_INCREMENT的計數器以及key的分布都儲存到.MYI檔案的頭部</code>

Searching rows for update

語句執行的第一個階段,找到所有滿足條件的行記錄

Sending data

線程在讀取和處理SELECT語句,發送資料到用戶端。由于語句需要大量的磁盤通路,這個狀态會在語句的整個生命周期中占據最長的一個狀态。

setup

線程開始進行ALTER TABLE 語句

Sorting for group

線程正在為group by 執行排序

Sorting for order

線程正在為order by 執行排序

Sorting index

在myisam表的優化操作中,進行索引頁的排序以便獲得更好的通路性能。

Sorting result

對結果進行排序

statistics

伺服器正在計算統計資料進而來生成一個執行計劃。如果一個線程保留這個狀态很長的時間,意味着伺服器在執行其他的磁盤相關的工作。

System lock

線程正在請求和擷取一個内部和外部鎖。如果有這個狀态

Table lock

System Lock後的另一個線程狀态。線程已經擷取了一個外部鎖,然後接下來要去擷取一個内部表鎖。

update

線程已經準備好去更新

Updating

現在正在找或者正在更新行

<code>updating main table</code>

伺服器正在執行一個多表update語句,正在更新第一張表,儲存行和偏移量以用來更新其他表。

<code>updating reference tables</code>

伺服器正在執行一個多表update語句的第二部分,正在從其他表更新行

User lock

請求或者等待擷取一個鎖

<code>User sleep</code>

線程sleep

<code>Waiting for release of readlock</code>

等待一個全局的讀鎖

<code>Waiting for tables</code>, <code>Waiting for table</code>

線程獲得提示依賴的表結構發生了改變,線程需要重新打開表來擷取新的結構。但是,重新打開表是需要等待其他的線程關閉表。

Waiting on cond

線程正在等條件變成true

Waiting to get readlock

線程用<code>FLUSH TABLES WITH READ LOCK語句,是以要獲得一個全局的讀鎖,這個狀态表示正在等這個鎖。</code>

<code>Writing to net</code>

伺服器把包寫到網絡

本文轉自 freeterman 51CTO部落格,原文連結:http://blog.51cto.com/myunix/1742367,如需轉載請自行聯系原作者