這篇文章主要介紹怎么快速定位當(dāng)前數(shù)據(jù)庫消耗CPU最高的sql語句,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),嘉陵網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:嘉陵等地區(qū)。嘉陵做網(wǎng)站價格咨詢:18982081108
如何快速定位消耗 CPU 最高的 sql 語句,怎么做?
如果是Oracle數(shù)據(jù)庫我們可以很容易通過sql來定位到當(dāng)前數(shù)據(jù)庫中哪些消耗CPU高的語句,而MySQL數(shù)據(jù)庫可以怎么定位呢?這里用一個簡單例子說明下...
主要意思是針對定位CPU的問題,Percona增加了對通過信息的TID列將processlist ID映射到OS線程ID的支持,而MySQL在5.7版本后在PERFORMANCE_SCHEMA.THREADS表加了一個THREAD_OS_ID新列來實(shí)現(xiàn),以下方法適用于在其他內(nèi)核正常運(yùn)行時,某個特定CPU的查詢過載的情況。
find out which session is using the most CPU resources in my database?
pidstat -t -p
通過該命令我們可以定位到802、4445等線程消耗了大量的CPU,這里盡量確保在pidstat的多個樣本中驗(yàn)證消耗是恒定的。根據(jù)這些信息,我們可以登錄到數(shù)據(jù)庫,并使用以下查詢找出哪個MySQL線程是罪魁禍?zhǔn)住?/p>
select * from performance_schema.threads where thread_os_id = xx ;select * from information_schema.`PROCESSLIST` where id=threads.processlist_id
這里對應(yīng)看一下執(zhí)行計(jì)劃基本就可以判斷當(dāng)前數(shù)據(jù)庫CPU為什么消耗這么高了...
至于優(yōu)化的點(diǎn)只需要在dock建一個索引即可,這里就不介紹了。
以上是“怎么快速定位當(dāng)前數(shù)據(jù)庫消耗CPU最高的sql語句”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!