首先咱們要了解:mysql
1.MysqlDumpSlow是 mysql官方提供的慢查詢日誌分析工具。sql
2.慢查詢日誌記錄的是記錄執行時長超過閾值(即配置文件中long_query_time的值,這個值咱們能夠根據項目的狀況自行定義)的sql語句日誌。工具
1.查詢是否開啓慢查詢日誌及日誌文件的目錄spa
show variables like '%slow_query_log%';
結果以下:默認的慢查詢日誌是關閉狀態。(推薦:須要調優的時候纔將此功能打開,平常使用會加大對mysql服務的壓力。)日誌
2.開啓慢查詢並設置閾值code
set global slow_query_log=1;#開啓慢查詢,若是已開啓可忽略
show variables like 'long_query_time%'; #查詢慢查詢的閾值,若是不知足需求,能夠自行更改
set global long_query_time=3; #設置慢查詢閾值,根據需求調整
3.補充:調優也可將沒有使用索引的sql語句加入到日誌中blog
show variables like 'log_queries_not_using_indexes'; #查詢是否開啓此功能 set global log_queries_not_using_indexes=1;#開啓將未使用索引的sql寫入日誌功能
1.操做命令排序
1 /path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
這會輸出記錄次數最多的10條SQL語句。索引
其中:it
1 -s, 是sort的意思,表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒序; 2 -t, 是top n的意思,即爲返回前面多少條的數據; 3 -g, 是grep的意思,後邊能夠寫一個正則匹配模式,大小寫不敏感的;
好比:
1 /path/mysqldumpslow -s r -t 10 /database/mysql/slow-log 2 獲得返回記錄集最多的10個查詢。 3 /path/mysqldumpslow -s t -t 10 -g 「left join」 /database/mysql/slow-log 4 獲得按照時間排序的前10條裏面含有左鏈接的查詢語句。
輸出圖表以下:
字段:
出現次數(Count), 執行最長時間(Time), 累計總耗費時間(Time), 等待鎖的時間(Lock), 發送給客戶端的行總數(Rows), 掃描的行總數(Rows), 用戶以及sql語句自己(抽象了一下格式, 好比 limit 1, 20 用 limit N,N 表示).