Linux服務(wù)器通過(guò)top命令查看mysqld的進(jìn)程CPU占用過(guò)高,我們可以使用Mysql的show full processlist命令來(lái)優(yōu)化與查看進(jìn)程,以便進(jìn)行異常的排除。
show full processlist可以實(shí)時(shí)查看當(dāng)前mysql線程的處理情況,讓我們清楚的了解那些sql語(yǔ)句耗時(shí)多長(zhǎng)時(shí)間,有沒(méi)有一些突發(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語(yǔ)句
③.host,顯示這個(gè)語(yǔ)句是從哪個(gè)ip的哪個(gè)端口上發(fā)的,可以用來(lái)跟蹤出現(xiàn)問(wèn)題語(yǔ)句的用戶
④.db,顯示這個(gè)進(jìn)程目前連接的是哪個(gè)數(shù)據(jù)庫(kù)
⑤.command,顯示當(dāng)前連接的執(zhí)行的命令,一般取值為休眠(sleep),查詢(query),連接(connect)等
⑥.time,顯示這個(gè)狀態(tài)持續(xù)的時(shí)間,單位是秒
⑦.state,顯示使用當(dāng)前連接的sql語(yǔ)句的狀態(tài),很重要的列。state描述的是語(yǔ)句執(zhí)行中的某一個(gè)狀態(tài)。一個(gè)sql語(yǔ)句,以查詢?yōu)槔?,可能需要?jīng)過(guò)copying to tmp table、sorting result、sending data等狀態(tài)才可以完成
⑧.info,顯示這個(gè)sql語(yǔ)句,是判斷問(wèn)題語(yǔ)句的一個(gè)重要依據(jù)