最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一次MySQL慢查詢導致的故障

 更新時間:2015年08月12日 08:53:20   作者:Robin Wen  
這篇文章主要介紹了如何對MySQL慢查詢導致的故障進行處理,慢查詢是我們在mysql中經(jīng)常需要使用到的一個很方便的功能,慢查詢對于跟蹤有問題的查詢很有用,需要的朋友可以參考下

我們知道分析MySQL語句查詢性能的方法除了使用EXPLAIN 輸出執(zhí)行計劃,還可以讓MySQL記錄下查詢超過指定時間的語句,我們將超過指定時間的SQL語句查詢稱為“慢查詢”。

一、 起因
研發(fā)反應某臺數(shù)據(jù)庫僵死,后面的會話要么連接不上,要么要花費大量的時間返回結(jié)果,哪怕是一個簡單的查詢。

二、 處理
首先去監(jiān)控平臺查看服務器以及數(shù)據(jù)庫狀態(tài),發(fā)現(xiàn)這臺數(shù)據(jù)庫有大量的慢查詢。繼續(xù)看服務器監(jiān)控,CPU 平均使用率較高,IO 讀寫平均值正常。登錄到 MySQL,使用 SHOW PROCESSLIST 查看會話狀態(tài),總數(shù)居然有 600+,這是很不正常的。查看慢查詢?nèi)罩荆l(fā)現(xiàn)出問題的 SQL 主要集中在幾個,有 SUM、有 COUNT、有等值操作等等。這臺 MySQL 服務器的 long_query_time 設(shè)置為 3秒,而一個簡單的查詢卻要幾十秒,這顯然是有問題的。寫腳本試著 kill 掉相關(guān)的會話,發(fā)現(xiàn)于事無補,仍然有大量的連接進來。此時使用 top 查看服務器狀態(tài),mysqld 進程占用內(nèi)存和 CPU 居高不下。

故障期間的慢查詢數(shù),如圖:

CPU 平均使用率,如圖:

接著使用 SHOW FULL PROCESSLIST 查看完整狀態(tài),在最上面居然發(fā)現(xiàn)幾條 SQL。這些 SQL 操作使用子查詢實現(xiàn),TIME 列居然達到了 30000 秒,折算過來差不多 10 小時。EXPLAIN 這些語句,居然出現(xiàn)了 USING TEMPORY 和 USING FILESORT,可以看出這些語句是很糟糕的。于是跟開發(fā)確認,緊急把這些會話 kill 掉。稍等片刻,會話數(shù)立馬降下來,只有 100+,top 查看 mysqld 進程,內(nèi)存和 CPU 都呈現(xiàn)下降的趨勢。接著分析開發(fā)說上午 9 時寫了這些 SQL,發(fā)現(xiàn)有問題,注釋掉了。新的代碼雖然沒有此類 SQL,但之前建立的連接并不會釋放。解決問題和出現(xiàn)問題的時間差剛好可以和添加子查詢的時間對應,就可以確認子查詢是此次故障的罪魁禍首。

三、 總結(jié)
通過這個故障,總結(jié)如下幾點:

  • MySQL 應該盡量避免使用子查詢,即使使用,也要搞清楚大表和小表的關(guān)系;
  • 出現(xiàn)這類問題的排查步驟

第一,查看服務器監(jiān)控和 MySQL 監(jiān)控,分析服務器以及 MySQL 性能,找出異常;
第二,如果是慢查詢導致,查看慢查詢?nèi)罩?,找出出現(xiàn)問題的 SQL,試著優(yōu)化,或者把結(jié)果緩存;
第三,分清主次,先解決大塊問題,后解決細小問題。 把大塊的異常解決,小問題就迎刃而解了。比如本文中的例子,把耗費時間長的會話 kill 掉后,后面的連接就正常了;
第四,總結(jié)分析。

  • 高效的溝通會事半功倍;
  • DBA 需要定期給出 Top N SQL(類 Oracle 的說法),提供給開發(fā),并協(xié)助優(yōu)化;
  • 查看監(jiān)控時,不管是服務器監(jiān)控還是 MySQL 監(jiān)控,需要做對比,比如和昨天甚至前天的同一時間對比,這會更加快速地定位問題。

四、 技巧
最后,附上一個快速kill 掉 MySQL 會話的方法:

首先使用如下語句分析出有問題的 SQL:

/usr/local/mysql/bin/mysql -uroot -p'XXX' \ -e "SHOW FULL PROCESSLIST;" | more

然后將 SHOW FULL PROCESSLIST 的結(jié)果保存到一個文件:

/usr/local/mysql/bin/mysql -uroot -p'XXX' \
-e "SHOW FULL PROCESSLIST;" | \
grep "XXX" | awk '{print $1}' > mysql_slow.txt

最后使用如下簡單的 Shell 腳本 kill 掉相關(guān)會話:

SELECT concat('kill ',id,';')
FROM information_schema.processlist
WHERE info like 'XXX';

當然也可以使用如下 SQL 拼接 kill 語句:

SELECT concat('kill ',id,';')
FROM information_schema.processlist
WHERE info like 'XXX';

本文對MySQL慢查詢導致故障的起因,處理方法,所需的技巧進行了全面分析,希望可以讓大家更好的了解MySQL慢查詢,對大家的。

相關(guān)文章

  • MySQL命令執(zhí)行sql文件的方法小結(jié)

    MySQL命令執(zhí)行sql文件的方法小結(jié)

    本文給大家分享MySQL命令執(zhí)行sql文件的兩種方法,每種方法給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • mysql觸發(fā)器trigger實例詳解

    mysql觸發(fā)器trigger實例詳解

    MySQL好像從5.0.2版本就開始支持觸發(fā)器的功能了,本次博客就來介紹一下觸發(fā)器,首先還是談下概念性的東西吧,需要的朋友可以參考下
    2021-03-03
  • Mysql什么情況下不會命中索引

    Mysql什么情況下不會命中索引

    在某些情況下,即使存在索引,查詢也可能不會使用到索引,從而導致查詢效率降低,下面就來介紹一下Mysql什么情況下不會命中索引,感興趣的可以了解一下
    2025-04-04
  • MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析

    MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析

    這篇文章主要介紹了MySQL8.0連接協(xié)議及3306、33060、33062端口的作用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL INSERT INTO SELECT時自增Id不連續(xù)問題及解決

    MySQL INSERT INTO SELECT時自增Id不連續(xù)問題及解決

    這篇文章主要介紹了INSERT INTO SELECT時自增Id不連續(xù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 安裝配置mysql及Navicat prenium的詳細流程

    安裝配置mysql及Navicat prenium的詳細流程

    這篇文章主要介紹了安裝配置mysql及Navicat Premium的詳細流程,配置方法也真的很簡單,本文給大家詳細介紹mysql Navicat Premium安裝配置相關(guān)知識感興趣的朋友,一起學習吧
    2021-06-06
  • MYSQL索引建立需要注意以下幾點細節(jié)

    MYSQL索引建立需要注意以下幾點細節(jié)

    建立MYSQL索引時需要注意以下幾點:建立索引的時機/對于like/對于有多個條件的/開啟索引緩存/建立索引是有代價的等等,感興趣的你可以參考下本文,或許可以幫助到你
    2013-03-03
  • 如何查看連接MYSQL數(shù)據(jù)庫的IP信息

    如何查看連接MYSQL數(shù)據(jù)庫的IP信息

    這篇文章介紹了三種查看連接MYSQL數(shù)據(jù)庫的IP信息方法,方法簡單實用,需要的朋友可以參考下
    2015-07-07
  • Mysql中Identity 詳細介紹

    Mysql中Identity 詳細介紹

    這篇文章主要介紹了Mysql中Identity 的相關(guān)資料,并附示例代碼,需要的朋友可以參考下
    2016-09-09
  • 提高MySQL深分頁查詢效率的三種方案

    提高MySQL深分頁查詢效率的三種方案

    這篇文章介紹了提高MySQL深分頁查詢效率的三種方案,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

阿克苏市| 铜陵市| 岫岩| 盘山县| 洛南县| 筠连县| 安达市| 彭泽县| 平定县| 即墨市| 新宾| 洞口县| 雅江县| 南丹县| 贵港市| 德阳市| 蓬溪县| 乐清市| 广灵县| 阿鲁科尔沁旗| 通河县| 普宁市| 宁陕县| 乐陵市| 沙雅县| 萍乡市| 石屏县| 丹凤县| 玉溪市| 客服| 河源市| 涪陵区| 尤溪县| 桐柏县| 于都县| 理塘县| 丹江口市| 灵川县| 昌江| 绥棱县| 保靖县|