MySQL占用CPU過高排查過程及可能優(yōu)化方案
1.查看生產(chǎn)DB服務(wù)器top列表,
執(zhí)行 top 命令
2.使用root用戶登錄mysql
執(zhí)行 show full processlist 查看慢查詢,反復(fù)執(zhí)行,如果發(fā)現(xiàn)一直有select 查詢語句存在,為了緩解DB服務(wù)器壓力,直接使用kill命令殺掉
kill 慢查詢的id
如果服務(wù)器壓力緩解,恢復(fù)正常。
3.查詢是否有鎖問題
show OPEN TABLES where In_use > 0;
查看正在鎖的事務(wù)
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待鎖的事務(wù)
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
4.殺掉當(dāng)前所有的MySQL連接
mysqladmin -uroot -p processlist|awk -F "|" '{print $2}' |xargs -n 1 mysqladmin -uroot -p killMysql占用CPU過高如何優(yōu)化
1.打開慢查詢?nèi)罩?,查詢是否是某個(gè)SQL語句占用過多資源,如果是的話,可以對(duì)SQL語句進(jìn)行優(yōu)化,比如優(yōu)化 insert 語句、優(yōu)化 group by 語句、優(yōu)化 order by 語句、優(yōu)化 join 語句等等;
2.考慮索引問題,使用explain關(guān)鍵字分析SQL
3.定期分析表,使用optimize table;
4.優(yōu)化數(shù)據(jù)庫對(duì)象;
5.考慮是否是鎖問題;
6.調(diào)整一些MySQL Server參數(shù),比如key_buffer_size、table_cache、innodb_buffer_pool_size、innodb_log_file_size等等;
7.如果數(shù)據(jù)量過大,可以考慮使用MySQL集群或者搭建高可用環(huán)境。
以上就是MySQL占用CPU過高排查過程及可能優(yōu)化方案的詳細(xì)內(nèi)容,更多關(guān)于MySQL占用CPU過高的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
區(qū)別于Oracle的MySQL?insert會(huì)阻塞update
這篇文章主要介紹了區(qū)別于Oracle的MySQL?insert會(huì)阻塞update的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
數(shù)據(jù)庫實(shí)現(xiàn)行列轉(zhuǎn)換(mysql示例)
最近突然玩起了sql語句,想著想著便給自己出了一道題目:“行列轉(zhuǎn)換”。起初瞎折騰了不少時(shí)間也上網(wǎng)參考了一些博文,不過大多數(shù)是采用oracle數(shù)據(jù)庫當(dāng)中的一些便捷函數(shù)進(jìn)行處理,比如”pivot”。那么,在Mysql環(huán)境下如何處理?下面通過這篇文章我們來一起看看吧。2016-12-12
Mysql sql慢查詢監(jiān)控腳本代碼實(shí)例
這篇文章主要介紹了Mysql sql慢查詢監(jiān)控腳本代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

