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

一次MySQL慢查詢(xún)導(dǎo)致的故障

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

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

一、 起因
研發(fā)反應(yīng)某臺(tái)數(shù)據(jù)庫(kù)僵死,后面的會(huì)話(huà)要么連接不上,要么要花費(fèi)大量的時(shí)間返回結(jié)果,哪怕是一個(gè)簡(jiǎn)單的查詢(xún)。

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

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

CPU 平均使用率,如圖:

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

三、 總結(jié)
通過(guò)這個(gè)故障,總結(jié)如下幾點(diǎn):

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

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

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

四、 技巧
最后,附上一個(gè)快速kill 掉 MySQL 會(huì)話(huà)的方法:

首先使用如下語(yǔ)句分析出有問(wèn)題的 SQL:

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

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

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

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

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

當(dāng)然也可以使用如下 SQL 拼接 kill 語(yǔ)句:

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

本文對(duì)MySQL慢查詢(xún)導(dǎo)致故障的起因,處理方法,所需的技巧進(jìn)行了全面分析,希望可以讓大家更好的了解MySQL慢查詢(xún),對(duì)大家的。

相關(guān)文章

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

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

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

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

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

    Mysql什么情況下不會(huì)命中索引

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

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

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

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

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

    安裝配置mysql及Navicat prenium的詳細(xì)流程

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

    MYSQL索引建立需要注意以下幾點(diǎn)細(xì)節(jié)

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

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

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

    Mysql中Identity 詳細(xì)介紹

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

    提高M(jìn)ySQL深分頁(yè)查詢(xún)效率的三種方案

    這篇文章介紹了提高M(jìn)ySQL深分頁(yè)查詢(xún)效率的三種方案,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

获嘉县| 蓝山县| 两当县| 门源| 台中县| 濮阳县| 元谋县| 南丰县| 赣榆县| 东乡县| 建湖县| 界首市| 南安市| 贵港市| 德保县| 小金县| 汶川县| 丹阳市| 南和县| 河津市| 通化县| 河西区| 天峻县| 聂荣县| 梅州市| 鱼台县| 灵川县| 孝义市| 峨眉山市| 开江县| 集贤县| 六盘水市| 伊宁县| 光山县| 阿拉善盟| 历史| 利津县| 安达市| 方城县| 台北市| 奉新县|