Mysql調優之慢sql抓取
阿新 • • 發佈:2018-12-29
在生產中,經常遇到某條sql執行速度慢而影響整個系統的執行,如何找到這條影響系統的sql是解決問題的前提。
mysql在出廠時許多預設功能並未開啟,這樣是為了保證mysql的執行效能,像上述問題一樣,我們可以開啟 sql慢查詢日誌,從而抓取拖慢系統的某條sql。
1、檢視慢日誌查詢開啟狀態
執行 show variables like ‘%slow_query_log%’;
日誌預設狀態是關閉的, /var/lib/mysql/localhost-slow.log 是日誌檔案所在伺服器的位置,日誌的名字 以 主機-slow.log命名。
2、開啟慢日誌查詢
set global slow_query_log =1;
現在可以檢視為開啟狀態,但是這個狀態只對本資料庫本次有效,如重啟便恢復關閉狀態,若要長期開啟,還需要修改配置檔案。
3、檢視慢sql閾值
執行 show variables like ‘%long_query_time%’;
預設設定 10秒為慢sql,在生產中一般sql超過2~3秒就已經很慢了(可以根據自己需求設定此值)
發現修改後,值還為10秒。原因是需要重新連線或者開啟一個新的會話才能看到修改的值。
執行 show global variables like ‘%long_query_time%’;
可看到修改的值。
4、模擬查詢慢sql
執行 select sleep(4);
5、檢視日誌
檢視日誌 如下:
從而得出執行慢的sql,進行優化。