這篇文章主要介紹怎么快速定位當(dāng)前數(shù)據(jù)庫消耗CPU最高的sql語句,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
如何快速定位消耗 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新列來實現(xiàn),以下方法適用于在其他內(nèi)核正常運行時,某個特定CPU的查詢過載的情況。
find out which session is using the most CPU resources in my database?
定位線程
pidstat -t -p
通過該命令我們可以定位到802、4445等線程消耗了大量的CPU,這里盡量確保在pidstat的多個樣本中驗證消耗是恒定的。根據(jù)這些信息,我們可以登錄到數(shù)據(jù)庫,并使用以下查詢找出哪個MySQL線程是罪魁禍首。
定位問題sql
select*fromperformance_schema.threadswherethread_os_id=xx;select*frominformation_schema.`PROCESSLIST`whereid=threads.processlist_id
查看問題sql執(zhí)行計劃
這里對應(yīng)看一下執(zhí)行計劃基本就可以判斷當(dāng)前數(shù)據(jù)庫CPU為什么消耗這么高了...
至于優(yōu)化的點只需要在dock建一個索引即可,這里就不介紹了。
-
cpu
+關(guān)注
關(guān)注
68文章
11055瀏覽量
216304 -
SQL
+關(guān)注
關(guān)注
1文章
782瀏覽量
44909 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3905瀏覽量
65885 -
MySQL
+關(guān)注
關(guān)注
1文章
849瀏覽量
27672 -
線程
+關(guān)注
關(guān)注
0文章
507瀏覽量
20112
原文標題:教你如何快速定位當(dāng)前數(shù)據(jù)庫消耗 CPU 最高的 sql 語句
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
數(shù)據(jù)庫SQL的優(yōu)化

請教如何用SQL語句來壓縮ACCESS數(shù)據(jù)庫
輕松學(xué)會SQL server數(shù)據(jù)庫的SQL 語句的開發(fā),有程序,有word講解
請問labview如何通過語句連接sql sever數(shù)據(jù)庫?
LabVIEW2018用SQL語句操作Microsoft Access 2010 數(shù)據(jù)庫
數(shù)據(jù)庫SQL語句電子教程
醫(yī)院SQL數(shù)據(jù)庫系統(tǒng)語句優(yōu)化
使用SQL語句創(chuàng)建數(shù)據(jù)庫的實例詳細說明
SQL數(shù)據(jù)庫中dbo注入語句大全的詳細資料說明

評論