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

Id:鏈接mysql 服務(wù)器線程的唯一標(biāo)識,可以通過kill來終止此線程的鏈接。
User:當(dāng)前線程鏈接數(shù)據(jù)庫的用戶
Host:顯示這個語句是從哪個ip 的哪個端口上發(fā)出的。可用來追蹤出問題語句的用戶
db: 線程鏈接的數(shù)據(jù)庫,如果沒有則為null
Command: 顯示當(dāng)前連接的執(zhí)行的命令,一般就是休眠或空閑(sleep),查詢(query),連接(connect)
Time: 線程處在當(dāng)前狀態(tài)的時間,單位是秒
State:顯示使用當(dāng)前連接的sql語句的狀態(tài),很重要的列,后續(xù)會有所有的狀態(tài)的描述,請注意,state只是語句執(zhí)行中的某一個狀態(tài),一個 sql語句,已查詢?yōu)槔赡苄枰?jīng)過copying to tmp table,Sorting result,Sending data等狀態(tài)才可以完成
Info: 線程執(zhí)行的sql語句,如果沒有語句執(zhí)行則為null。這個語句可以使客戶端發(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
這樣就能過濾出來哪些正在干過的,然后按照消耗時間倒序展示,排在最前面的,極大可能就是有問題的鏈接然后查看info一列,就能看到對應(yīng)的執(zhí)行的什么sql了


浙公網(wǎng)安備 33010602011771號