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.殺掉當前所有的MySQL連接
mysqladmin -uroot -p processlist|awk -F "|" '{print $2}' |xargs -n 1 mysqladmin -uroot -p kill
Mysql占用CPU過高如何優(yōu)化
1.打開慢查詢?nèi)罩荆樵兪欠袷悄硞€SQL語句占用過多資源,如果是的話,可以對SQL語句進行優(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ù)庫對象;
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)化方案的詳細內(nèi)容,更多關(guān)于MySQL占用CPU過高的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
手把手教你使用Navicat生成MySQL測試數(shù)據(jù)
Navicat是一套快速、可靠并價格相當便宜的數(shù)據(jù)庫管理工具,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè),下面這篇文章主要給大家介紹了關(guān)于使用Navicat生成MySQL測試數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2023-05-05IP處理函數(shù)inet_aton()和inet_ntoa()使用說明
IP處理函數(shù)inet_aton()和inet_ntoa()使用說明,需要的朋友可以參考下2012-03-03