Linux服務(wù)器通過top命令查看mysqld的進(jìn)程CPU占用過高,我們可以使用Mysql的show full processlist命令來優(yōu)化與查看進(jìn)程,以便進(jìn)行異常的排除。
show full processlist可以實(shí)時(shí)查看當(dāng)前mysql線程的處理情況,讓我們清楚的了解那些sql語句耗時(shí)多長時(shí)間,有沒有一些突發(fā)性產(chǎn)生大量鏈接數(shù)的情況。
我們使用mysql -u root -p登陸msyql
輸入以下命令:
mysql> show full processlist;
各個(gè)列的含義:
①.id,用戶登錄mysql時(shí),系統(tǒng)分配的"connection_id",可以使用函數(shù)connection_id()查看
②.user,顯示當(dāng)前用戶。如果不是root,這個(gè)命令就只顯示用戶權(quán)限范圍的sql語句
③.host,顯示這個(gè)語句是從哪個(gè)ip的哪個(gè)端口上發(fā)的,可以用來跟蹤出現(xiàn)問題語句的用戶
④.db,顯示這個(gè)進(jìn)程目前連接的是哪個(gè)數(shù)據(jù)庫
⑤.command,顯示當(dāng)前連接的執(zhí)行的命令,一般取值為休眠(sleep),查詢(query),連接(connect)等
⑥.time,顯示這個(gè)狀態(tài)持續(xù)的時(shí)間,單位是秒
⑦.state,顯示使用當(dāng)前連接的sql語句的狀態(tài),很重要的列。state描述的是語句執(zhí)行中的某一個(gè)狀態(tài)。一個(gè)sql語句,以查詢?yōu)槔?,可能需要?jīng)過copying to tmp table、sorting result、sending data等狀態(tài)才可以完成
⑧.info,顯示這個(gè)sql語句,是判斷問題語句的一個(gè)重要依據(jù)