這篇文章主要介紹怎么快速定位當(dāng)前數(shù)據(jù)庫(kù)消耗CPU最高的sql語(yǔ)句,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
如何快速定位消耗 CPU 最高的 sql 語(yǔ)句,怎么做?
概述
如果是Oracle數(shù)據(jù)庫(kù)我們可以很容易通過(guò)sql來(lái)定位到當(dāng)前數(shù)據(jù)庫(kù)中哪些消耗CPU高的語(yǔ)句,而mysql數(shù)據(jù)庫(kù)可以怎么定位呢?這里用一個(gè)簡(jiǎn)單例子說(shuō)明下...
主要意思是針對(duì)定位CPU的問(wèn)題,Percona增加了對(duì)通過(guò)信息的TID列將processlist ID映射到OS線程ID的支持,而MySQL在5.7版本后在PERFORMANCE_SCHEMA.THREADS表加了一個(gè)THREAD_OS_ID新列來(lái)實(shí)現(xiàn),以下方法適用于在其他內(nèi)核正常運(yùn)行時(shí),某個(gè)特定CPU的查詢(xún)過(guò)載的情況。
find out which session is using the most CPU resources in my database?
定位線程
pidstat -t -p
通過(guò)該命令我們可以定位到802、4445等線程消耗了大量的CPU,這里盡量確保在pidstat的多個(gè)樣本中驗(yàn)證消耗是恒定的。根據(jù)這些信息,我們可以登錄到數(shù)據(jù)庫(kù),并使用以下查詢(xún)找出哪個(gè)MySQL線程是罪魁禍?zhǔn)住?/p>
定位問(wèn)題sql
select*fromperformance_schema.threadswherethread_os_id=xx;select*frominformation_schema.`PROCESSLIST`whereid=threads.processlist_id
查看問(wèn)題sql執(zhí)行計(jì)劃
這里對(duì)應(yīng)看一下執(zhí)行計(jì)劃基本就可以判斷當(dāng)前數(shù)據(jù)庫(kù)CPU為什么消耗這么高了...
至于優(yōu)化的點(diǎn)只需要在dock建一個(gè)索引即可,這里就不介紹了。
-
cpu
+關(guān)注
關(guān)注
68文章
11189瀏覽量
221495 -
SQL
+關(guān)注
關(guān)注
1文章
789瀏覽量
46030 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3980瀏覽量
67456 -
MySQL
+關(guān)注
關(guān)注
1文章
892瀏覽量
28928 -
線程
+關(guān)注
關(guān)注
0文章
508瀏覽量
20665
原文標(biāo)題:教你如何快速定位當(dāng)前數(shù)據(jù)庫(kù)消耗 CPU 最高的 sql 語(yǔ)句
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)據(jù)庫(kù)SQL的優(yōu)化

Database數(shù)據(jù)庫(kù)SQL語(yǔ)句
請(qǐng)教如何用SQL語(yǔ)句來(lái)壓縮ACCESS數(shù)據(jù)庫(kù)
輕松學(xué)會(huì)SQL server數(shù)據(jù)庫(kù)的SQL 語(yǔ)句的開(kāi)發(fā),有程序,有word講解
請(qǐng)問(wèn)labview如何通過(guò)語(yǔ)句連接sql sever數(shù)據(jù)庫(kù)?
MySQL數(shù)據(jù)庫(kù)Access存儲(chǔ)讀取SQL語(yǔ)句
使用SQL語(yǔ)句操作數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)SQL語(yǔ)句電子教程
醫(yī)院SQL數(shù)據(jù)庫(kù)系統(tǒng)語(yǔ)句優(yōu)化
使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的實(shí)例詳細(xì)說(shuō)明
5種數(shù)據(jù)庫(kù)的SQL語(yǔ)句大全詳細(xì)說(shuō)明
SQL數(shù)據(jù)庫(kù)中dbo注入語(yǔ)句大全的詳細(xì)資料說(shuō)明

評(píng)論