如何找出Mysql中CPU占用高的查詢

查看具體查是哪個線程占用CPU最高

# 在Linux中使用top命令找到mysql進程ID
top - 22:11:02 up 279 days,  3:05,  0 users,  load average: 5.01, 6.78, 6.42
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s): 76.4 us,  6.8 sy,  0.0 ni, 13.3 id,  1.5 wa,  0.0 hi,  2.0 si,  0.0 st
MiB Mem :   7821.6 total,    133.8 free,   3278.6 used,   4409.2 buff/cache
MiB Swap:   2048.0 total,    393.7 free,   1654.3 used.   4243.3 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                   
    1 mysql     20   0 5850828   2.8g   9560 S 676.7  36.9 218111:07 mysqld                                                                                                    
29839 root      20   0    5740   2044   1580 S   0.0   0.0   0:00.01 bash                                                                                                      
29845 root      20   0    9816   1848   1388 R   0.0   0.0   0:00.00 top         
# 指定進程ID楚昭,找到占用CPU最高的線程ID
top -H -p 1
top - 22:11:36 up 279 days,  3:05,  0 users,  load average: 5.41, 6.70, 6.41
Threads: 1102 total,   4 running, 1098 sleeping,   0 stopped,   0 zombie
%Cpu(s): 39.3 us,  2.3 sy,  0.0 ni, 56.2 id,  1.7 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :   7821.6 total,    126.3 free,   3272.0 used,   4423.3 buff/cache
MiB Swap:   2048.0 total,    392.4 free,   1655.6 used.   4250.5 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                   
17943 mysql     20   0 5847756   2.8g   9560 R  81.5  36.8  12:02.04 mysqld                                                                                                    
10532 mysql     20   0 5847756   2.8g   9560 R  58.7  36.8   9:18.74 mysqld                                                                                                    
31587 mysql     20   0 5847756   2.8g   9560 S  30.7  36.8  52:08.27 mysqld                                                                                                    
14865 mysql     20   0 5847756   2.8g   9560 R  27.7  36.8  37:45.00 mysqld                                                                                                    
22558 mysql     20   0 5847756   2.8g   9560 S  21.1  36.8  22:24.18 mysqld                                                                                                    
 6064 mysql     20   0 5847756   2.8g   9560 S  16.8  36.8   4:01.18 mysqld  

根據(jù)操作系統(tǒng)線程ID找到對應(yīng)的mysql 線程ID

SELECT
    * 
FROM
    `performance_schema`.threads T 
WHERE
    T.THREAD_OS_ID = 17943

根據(jù)返回結(jié)果中的PROCESLIST_INFO等信息浸间,來判斷其執(zhí)行的語句是否可以進行優(yōu)化

SELECT * FROM `performance_schema`.`processlist` WHERE `processlist`.ID IN
(SELECT
    T.PROCESSLIST_ID
FROM
    `performance_schema`.threads T 
WHERE
    T.THREAD_OS_ID = 7013)

注意:docker運行的mysql要在容器內(nèi)找到線程ID

# 如果容易內(nèi)沒有top命令与境,如果昌官方基于 debian的mysql鏡像,使用如下命令安裝top命令
apt-get update
apt-get install procps
# 必須執(zhí)行apt-get update郊楣,否則可能會報E: Unable to locate package procps的錯

補充

如果覺得先從分析線程入手比較麻煩憔恳,也可以直接通過查詢當(dāng)前正在執(zhí)行的查詢?nèi)胧?/p>

SELECT * FROM `performance_schema`.`processlist` 
WHERE COMMAND != 'SLEEP' AND TIME > 1 ORDER BY TIME DESC

直接找出當(dāng)前下大執(zhí)行的查詢,按執(zhí)行時間倒充值净蚤,占用CPU高的查詢往往耗時也比較長

參考文章列表

Mysql thread 與 OS thread
mysql show processlist排查問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钥组,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子今瀑,更是在濱河造成了極大的恐慌者铜,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件放椰,死亡現(xiàn)場離奇詭異,居然都是意外死亡愉粤,警方通過查閱死者的電腦和手機砾医,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衣厘,“玉大人如蚜,你說我怎么就攤上這事压恒。” “怎么了错邦?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵探赫,是天一觀的道長。 經(jīng)常有香客問我撬呢,道長伦吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任魂拦,我火速辦了婚禮毛仪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芯勘。我一直安慰自己箱靴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布荷愕。 她就那樣靜靜地躺著衡怀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪安疗。 梳的紋絲不亂的頭發(fā)上抛杨,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音茂契,去河邊找鬼蝶桶。 笑死,一個胖子當(dāng)著我的面吹牛掉冶,可吹牛的內(nèi)容都是我干的真竖。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼厌小,長吁一口氣:“原來是場噩夢啊……” “哼恢共!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起璧亚,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤讨韭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后癣蟋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體透硝,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年疯搅,在試婚紗的時候發(fā)現(xiàn)自己被綠了濒生。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡幔欧,死狀恐怖罪治,靈堂內(nèi)的尸體忽然破棺而出丽声,到底是詐尸還是另有隱情,我是刑警寧澤觉义,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布雁社,位于F島的核電站,受9級特大地震影響晒骇,放射性物質(zhì)發(fā)生泄漏霉撵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一厉碟、第九天 我趴在偏房一處隱蔽的房頂上張望喊巍。 院中可真熱鬧,春花似錦箍鼓、人聲如沸崭参。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽何暮。三九已至,卻和暖如春铐殃,著一層夾襖步出監(jiān)牢的瞬間海洼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工富腊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坏逢,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓赘被,卻偏偏與公主長得像是整,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子民假,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容