mysql服務(wù)器CPU利用率過高排查過程
背景
監(jiān)控平臺(tái)告警mysql服務(wù)器CPU利用率過高。
當(dāng)時(shí)第一反應(yīng)是平時(shí)的CPU利用率一直都在50%以下,怎么會(huì)突然過高呢?懷疑是有某些sql語句導(dǎo)致的。
排查過程
1、通過ps命令查找mysql進(jìn)程ID
ps aux |grep mysqld
假設(shè)找到的pid為1796
2、使用top查找高CPU利用率的線程ID
top -Hp 1796
記錄高CPU利用率的線程ID,例如:12345
3、找到線程對應(yīng)的sql語句
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = (SELECT THREAD_ID FROM performance_schema.threads a WHERE THREAD_OS_ID = 12345);
看到有一條長sql執(zhí)行了2min還沒結(jié)束。
結(jié)論:是這條sql導(dǎo)致的CPU利用率過高
4、sql優(yōu)化
通過EXPLAIN去分析查詢sql
- 減少查詢行數(shù)
- 使用索引查詢
總結(jié)
通過利用率過高的mysql線程id找到 對應(yīng)的執(zhí)行sql ,然后通過EXPLAIN去優(yōu)化查詢語句。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL Lock wait timeout exceeded錯(cuò)誤
“Lock wait timeout exceeded” 是一個(gè)常見的MySQL錯(cuò)誤,指示了潛在的性能問題或死鎖,本文就來介紹一下如何解決,感興趣的可以了解一下2024-05-05
MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法小結(jié)
create_time通常是一個(gè)用于表示某個(gè)實(shí)體或事件創(chuàng)建時(shí)間的字段,在數(shù)據(jù)庫設(shè)計(jì)、日志記錄或許多軟件系統(tǒng)中常見,它存儲(chǔ)的是一個(gè)日期或時(shí)間戳,記錄了數(shù)據(jù)首次被創(chuàng)建的具體時(shí)刻,本文介紹了MySQL統(tǒng)計(jì)今日生成create_time的數(shù)據(jù)量的方法,需要的朋友可以參考下2024-08-08
mac 裝5.6版本mysql 設(shè)置密碼的簡易方法
這篇文章主要介紹了mac 裝5.6版本mysql 設(shè)置密碼的簡易方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05
mysql數(shù)據(jù)庫和oracle數(shù)據(jù)庫之間互相導(dǎo)入備份
今天小編就為大家分享一篇關(guān)于mysql數(shù)據(jù)庫和oracle數(shù)據(jù)庫之間互相導(dǎo)入備份,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04

