顧名思義,慢查詢日誌中記錄的是執行時間較長的query,也就是咱們常說的slowquery,經過設--log-slow-queries[=file_name]來打開該功能並設置記錄位置和文件名。慢查詢日誌採用的是簡單的文本格式,能夠經過各類文本編輯器查看其中的內容。其中記錄了語句執行的時刻,執行所消耗的時間,執行用戶,鏈接主機等相關信息。MySQL 還提供了專門用來分析滿查詢日誌的工具程序mysqlslowdump,用來幫助數據庫管理人員解決可能存在的性能問題。mysql
一、配置慢查詢web
Linux:
在mysql配置文件my.cnf中增長:log-slow-queries=/opt/data/slowquery.log (指定日誌文件存放位置,能夠爲空,系統會給一個缺省的文件host_name-slow.log)sql
long_query_time=2 (記錄超過的時間,默認爲10s)數據庫
log-queries-not-using-indexes (log下來沒有使用索引的query,能夠根據狀況決定是否開啓)
Windows:
在my.ini的[mysqld]添加以下語句:log-slow-queries = E:\web\mysql\log\mysqlslowquery.log 編輯器
long_query_time = 2(其餘參數如上)工具
慢查詢的配置也能夠經過執行命令來設置,這樣就不用重啓mysql服務了。性能
set global slow_query_log=on;
set global long_query_time=1;#設置記錄查詢超過多長時間的sql
set global slow_query_log_file=‘/opt/data/slow_query.log’;#設置mysql慢查詢日誌路徑,此路徑須要有寫權限
這種方式不用重啓mysql服務。spa
二、查詢mysql慢查詢狀態日誌
SHOW VARIABLES LIKE '%query%';
使用這個語句能夠看到當前mysql慢查詢是否開啓,以及mysql的慢查詢日誌文件在哪。
slow_query_log #是否開啓慢查詢
slow_query_log_file #日誌的存放位置
long_query_time #超過多少秒的查詢就寫入日誌blog
三、解析mysql慢查詢日誌
使用mysqldumpslow命令能夠解析mysql慢查詢日誌。
Mysqldumpslow命令參數以下:
-s,是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;
-t,是top n的意思,即爲返回前面多少條的數據;
-g,後邊能夠寫一個正則匹配模式,大小寫不敏感的;
好比說要按照sql執行時間最長的前20條sql
mysqldumpslow -s t -t 20 -g 'select'/opt/data/slowquery_2016050921.log
獲得按照時間排序的前10條裏面含有左鏈接的查詢語句。
mysqldumpslow -s t -t 10 -g 'left join'/opt/data/slowquery_2016050921.log