標籤:mysql慢查詢
前幾天更新完程式,測試功能時,發現應用登入非常慢,以為是應用有問題,但是等待較長一段時間後發現應用登入是ok的。檢查應用日誌,發現提示資料池已滿,無法建立更多的串連。然後趕緊登入資料庫檢查,
1、top查看發現mysql進程cpu使用率竟然高達1300%多,我勒個去,這是什麼鬼!
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/89/3E/wKiom1gNsLLwh6qlAAAef-bHiU4191.png-wh_500x0-wm_3-wmp_4-s_3727420077.png" title="QQ圖片20161024145725.png" alt="wKiom1gNsLLwh6qlAAAef-bHiU4191.png-wh_50" />
2、登入mysql查看線程
# show processlist
發現大量的從應用伺服器過來的串連,而且全部是Query狀態。想著看看慢查詢日誌有哪些SQL已耗用時間較長,導致串連一直保持Query狀態。
3、開啟慢查詢日誌
# show variables like "%slow%"; --查看慢查詢日誌是否開啟
# set global slow_query_log=on; --開啟慢查詢日誌
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/89/3F/wKiom1gNtamwRckWAAArle1Uruc115.png-wh_500x0-wm_3-wmp_4-s_1641193388.png" title="QQ圖片20161024151923.png" alt="wKiom1gNtamwRckWAAArle1Uruc115.png-wh_50" />
4、開啟慢查詢日誌一段時間後查看慢查詢日誌
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/3F/wKiom1gNtr2iBlyZAACir4sPfwc632.png-wh_500x0-wm_3-wmp_4-s_1738284705.png" title="QQ圖片20161024152405.png" alt="wKiom1gNtr2iBlyZAACir4sPfwc632.png-wh_50" />
媽呀,sql已耗用時間基本上都是在150s左右,這應用能快起來才真是神了。這SQL也是沒誰了~
那現在咋辦呢?建索引?最佳化sql語句?
想想最佳化sql語句也是遠水救不了近火了,後續再對sql語句最佳化吧。先試試建立索引看看吧,建立索引之後發現cpu使用率降下來了,應用登入也正常了。
5、用mysql內建慢查詢日誌分析工具mysqldumpslow看看有哪些語句較為嚴重
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/40/wKiom1gNuSiA_V2HAACir4sPfwc614.png-wh_500x0-wm_3-wmp_4-s_1769000994.png" title="QQ圖片20161024152405.png" alt="wKiom1gNuSiA_V2HAACir4sPfwc614.png-wh_50" />
記一次mysql 導致的CPU使用率過高問題