工作記錄-mysql調優例子

同事跟我反應線上的項目有一個后臺列表響應的很慢,我就抽空看了下

列表是由一個ajax從后臺取出json數據,所有的開銷都是php+mysql,chrome network顯示那個請求需要26s的響應。我的第一反應應該是數據量大了mysql查詢慢導致。

我記得這個項目配置了慢查詢日志,于是

show global variables like '%slow%'    #查看是否開啟滿查詢 

slow_query_log 的值為 on 已經開啟了慢查詢

show global variables like '%long%'   #查看滿查詢日志文件在哪里

我看了下慢查詢記錄,果然記錄剛剛的查詢,花費時間16s

我復制出該條語句并在本地用備份數據進行分析

explain  sql
麥庫截圖20171106115702934.jpg

可以看到該查詢影響了2個表分別是2882和1339行,并且沒有使用索引。
于是我就給他們的關聯字段加上了索引。

ALTER TABLE `smsmsg`
 ADD INDEX `phone` (`phone`);
ALTER TABLE `user`
 ADD INDEX `phone` (`phone`);

結果

最終響應時間縮短到了56ms,再次分析查詢語句

麥庫截圖20171106115612990.jpg

使用到了索引,并且影響行數只有30和1了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容