欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql占用CPU超過(guò)100%的詳細(xì)解決過(guò)程

 更新時(shí)間:2023年10月22日 15:03:56   作者:jimshen  
前段時(shí)間我的一個(gè)網(wǎng)站經(jīng)常打不開,通過(guò)檢查發(fā)現(xiàn)服務(wù)器cpu占用超過(guò)100%,通過(guò)top命令發(fā)現(xiàn)是mysql占用cpu特別高導(dǎo)致的,下面這篇文章主要給大家介紹了關(guān)于mysql占用CPU超過(guò)100%的詳細(xì)解決過(guò)程,需要的朋友可以參考下

一、使用top命令看到的情況如下:

可以看到服務(wù)器負(fù)載很高,,mysql CPU使用已達(dá)到接近400%(因?yàn)槭撬暮?,所以?huì)有超過(guò)100%的情況)。

二、在服務(wù)器上執(zhí)行mysql -u root -p之后,輸入show full processlist; 可以看到正在執(zhí)行的語(yǔ)句。

可以看到是下面的SQL語(yǔ)句執(zhí)行耗費(fèi)了較長(zhǎng)時(shí)間。

SELECT id,title,most_top,view_count,posttime FROM article 
where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  
order by most_top desc,posttime desc limit 0,8

但是從數(shù)據(jù)庫(kù)設(shè)計(jì)方面來(lái)說(shuō),該做的索引都已經(jīng)做了,SQL語(yǔ)句似乎沒(méi)有優(yōu)化的空間。
直接執(zhí)行此條SQL,發(fā)現(xiàn)速度很慢,需要1-6秒的時(shí)間(跟mysql正在并發(fā)執(zhí)行的查詢有關(guān),如果沒(méi)有并發(fā)的,需要1秒多)。如果把排序依據(jù)改為一個(gè),則查詢時(shí)間可以縮短至0.01秒(most_top)或者0.001秒(posttime)。

三、修改mysql配置文件中的pool/buffer等數(shù)值,重啟mysql都沒(méi)有作用。

四、通過(guò)EXPLAIN分析SQL語(yǔ)句

EXPLAIN SELECT id,title,most_top,view_count,posttime FROM article 
where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  
order by most_top desc,posttime desc limit 0,8

可以看到,主select對(duì)27928條記錄使用filesort進(jìn)行了排序,這是造成查詢速度慢的原因。然后8個(gè)并發(fā)的查詢使CPU專用很高。

五、優(yōu)化

首先是縮減查詢范圍

SELECT id,title,most_top,view_count,posttime FROM article 
where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and DATEDIFF(NOW(),posttime)<=90
order by most_top desc,posttime desc limit 0,8

發(fā)現(xiàn)有一定效果,但效果不明顯,原因是每條記錄都要做一次DATEDIFF運(yùn)算。后改為

SELECT id,title,most_top,view_count,posttime FROM article 
where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and postime>='2017-09-05'
order by most_top desc,posttime desc limit 0,8

查詢速度大幅提高。在PHP中,日期閾值通過(guò)計(jì)算得到

$d = date("Y-m-d", strtotime('-90 day'));
$sql = "
SELECT id,title,most_top,view_count,posttime FROM article 
where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and postime>='$d'
order by most_top desc,posttime desc limit 0,8
"

六、效果

查詢時(shí)間大幅度縮短,CPU負(fù)載很輕

以上就是mysql占用CPU超過(guò)100%的詳細(xì)解決過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于mysql占用CPU超過(guò)100%的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql中如何判斷當(dāng)前是字符 mysql判斷字段中有無(wú)漢字

    mysql中如何判斷當(dāng)前是字符 mysql判斷字段中有無(wú)漢字

    這篇文章主要介紹了mysql如何判斷字段中有無(wú)漢字的方法,使用length與char_length兩個(gè)函數(shù)就可以完成
    2014-01-01
  • 關(guān)于MySql鏈接url參數(shù)的設(shè)置

    關(guān)于MySql鏈接url參數(shù)的設(shè)置

    最近整理了一下網(wǎng)上關(guān)于MySql 鏈接url 參數(shù)的設(shè)置以及常用的幾個(gè)較為重要的參數(shù),大家若感興趣可以參考下
    2014-03-03
  • MySQL的prepare使用及遇到bug解析過(guò)程

    MySQL的prepare使用及遇到bug解析過(guò)程

    在一次開發(fā)中使用 MySQL PREPARE 以后,從 prepare 直接取 name 賦值給 lex->prepared_stmt_name 然后給 EXECUTE 用,發(fā)現(xiàn)有一定概率找不到 prepare stmt 的 name,于是開始動(dòng)手調(diào)查問(wèn)題發(fā)生的原因,本文給大家分享mysql prepare使用及問(wèn)題解決,感興趣的朋友一起看看吧
    2022-05-05
  • 提升MongoDB性能的方法

    提升MongoDB性能的方法

    在本篇文章中我們給大家總結(jié)了提升MongoDB性能的方法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-09-09
  • MySQL三大日志(binlog、redo?log和undo?log)圖文詳解

    MySQL三大日志(binlog、redo?log和undo?log)圖文詳解

    日志是MySQL數(shù)據(jù)庫(kù)的重要組成部分,記錄著數(shù)據(jù)庫(kù)運(yùn)行期間各種狀態(tài)信息,下面這篇文章主要給大家介紹了關(guān)于MySQL三大日志(binlog、redo?log和undo?log)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 在Centos 5.5 上編譯安裝mysql 5.5.9

    在Centos 5.5 上編譯安裝mysql 5.5.9

    由于開發(fā)需要,現(xiàn)在需要安裝安裝MySQL 5.5.9,使用了rpm安裝總是出錯(cuò),而且還有好多依事關(guān)系麻煩,此外也沒(méi)有找到二進(jìn)制的包,只好找源碼包進(jìn)行編譯;
    2014-07-07
  • Mysql掛掉后無(wú)法重啟報(bào)pid文件丟失的解決方法

    Mysql掛掉后無(wú)法重啟報(bào)pid文件丟失的解決方法

    這篇文章主要介紹了Mysql掛掉后無(wú)法重啟報(bào)pid文件丟失的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • MySQL多表查詢內(nèi)連接外連接詳解(使用join、left?join、right?join和full?join)

    MySQL多表查詢內(nèi)連接外連接詳解(使用join、left?join、right?join和full?join)

    這篇文章主要給大家介紹了關(guān)于MySQL多表查詢內(nèi)連接外連接的相關(guān)資料,文中主要介紹的是使用join、left?join、right?join和full?join,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • MySQL8的主要目錄結(jié)構(gòu)解讀

    MySQL8的主要目錄結(jié)構(gòu)解讀

    這篇文章主要介紹了MySQL8的主要目錄結(jié)構(gòu),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • win7下mysql6.x出現(xiàn)中文亂碼的完美解決方法

    win7下mysql6.x出現(xiàn)中文亂碼的完美解決方法

    本文給大家分享win7下mysql 6.x出現(xiàn)中文亂碼的完美解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-04-04

最新評(píng)論