Mysql如何分析慢查詢日誌--MysqlDumpSlow詳解

首先咱們要了解:mysql

  1.MysqlDumpSlow是 mysql官方提供的慢查詢日誌分析工具。sql

  2.慢查詢日誌記錄的是記錄執行時長超過閾值(即配置文件中long_query_time的值,這個值咱們能夠根據項目的狀況自行定義)的sql語句日誌。工具

1、在使用MysqlDumpSlow工具以前的準備工做:

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寫入日誌功能

 

2、MysqlDumpSlow工具的使用

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 表示).
相關文章
相關標籤/搜索