1. 程式人生 > >Mysql調優之慢sql抓取

Mysql調優之慢sql抓取

在生產中,經常遇到某條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,進行優化。