一,命令概述
mysql show processlist ; 用來查看當(dāng)前線程處理的情況
show full processlist 返回的結(jié)果是實(shí)時(shí)變化的,是對mysql連接執(zhí)行的現(xiàn)場快照,所以用來處理突發(fā)事件將是非常有用的。
一般用到show processlist 和show full processlist 都是為了查看當(dāng)前mysql是否有壓力,都在跑什么語句,當(dāng)前語句耗時(shí)多久了,有沒有慢sql在執(zhí)行之類的。
##有時(shí)候一個(gè)快照看不出來什么,頻繁刷新一下
也可以通過navicate 工具的tool ->服務(wù)器監(jiān)控下去勾選自己的masql去查看

Id:鏈接mysql 服務(wù)器線程的唯一標(biāo)識(shí),可以通過kill來終止此線程的鏈接。
User:當(dāng)前線程鏈接數(shù)據(jù)庫的用戶
Host:顯示這個(gè)語句是從哪個(gè)ip 的哪個(gè)端口上發(fā)出的。可用來追蹤出問題語句的用戶
db: 線程鏈接的數(shù)據(jù)庫,如果沒有則為null
Command: 顯示當(dāng)前連接的執(zhí)行的命令,一般就是休眠或空閑(sleep),查詢(query),連接(connect)
Time: 線程處在當(dāng)前狀態(tài)的時(shí)間,單位是秒
State:顯示使用當(dāng)前連接的sql語句的狀態(tài),很重要的列,后續(xù)會(huì)有所有的狀態(tài)的描述,請注意,state只是語句執(zhí)行中的某一個(gè)狀態(tài),一個(gè) sql語句,已查詢?yōu)槔赡苄枰?jīng)過copying to tmp table,Sorting result,Sending data等狀態(tài)才可以完成
Info: 線程執(zhí)行的sql語句,如果沒有語句執(zhí)行則為null。這個(gè)語句可以使客戶端發(fā)來的執(zhí)行語句也可以是內(nèi)部執(zhí)行的語句
由于command的狀態(tài)大部分都是sleep對我們分析問題沒有什么作用,所以我們可以通如下語句來排除sleep狀態(tài)的線程;
select id, db, user, host, command, time, state, info
from information_schema.processlist
where command != 'Sleep'
order by time desc
這樣就能過濾出來哪些正在干過的,然后按照消耗時(shí)間倒序展示,排在最前面的,極大可能就是有問題的鏈接然后查看info一列,就能看到對應(yīng)的執(zhí)行的什么sql了

三 ,kill的使用
kill+進(jìn)程號 可以刪除對應(yīng)的進(jìn)程,
select concat('kill',id,';' ) from information_schema.processlist where comman !='sleep' and time >2*60 order by time desc;
總結(jié)了一些常見問題:
explain 分析一下 SQL 語句