目錄
二、將上面的配置放入到Mysql安裝目錄的my.ini文件中
五、安裝慢查詢輔助工具軟件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe
六、使用Mysql內置自帶的慢查詢分析工具mysqldumpslow
一、慢查詢配置,及配置項說明
#開啓慢查詢
#日記存放的地方table/file/(file,table)
#general log會記錄下發送給MySQL服務器的所有SQL記錄,因爲SQL的量大,默認是不開啓的。一些特殊情況(如排除故障)可能需要臨時開啓一下
log_output=FILE
general_log=OFF
general_log_file="DESKTOP-2EKGE5.log"
#啓動停止技術慢查詢日記 ON表示開啓 OFF表示關閉,默認不開啓
slow_query_log=ON
#指定慢查詢日記存儲路徑及文件(不指定路徑,默認和數據文件放一起data)
slow_query_log_file="DESKTOP-2EKGE5-show.log"
#指定時間多少爲慢查詢,默認是10秒(就是不設置此項也是10s)
long_query_time=10
二、將上面的配置放入到Mysql安裝目錄的my.ini文件中
三、修改了配置文件,需要在命令行重啓一下mysql服務
四、去數據庫查詢語句,需要超過10s的語句纔會被記錄,當然上面你可以自己設置慢查詢的時間,從而記錄,最終都會寫到data目錄下的DESKTOP-2EKGE5-show.log文件中,這都是上面配置文件設置的
如:我的數據庫查詢
查詢結果26s,如果慢查詢已經開啓,此次結果肯定被記錄在DESKTOP-2EKGE5-show.log文件中
到Mysql/data目錄下,果然看到生成的DESKTOP-2EKGE5-show.log文件內容如下
此時,在多查詢幾條超過10s的語句
五、安裝慢查詢輔助工具軟件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe
安裝後,可以使用perl命令運行mysql內置自帶的mysqldumpslow慢查詢分析工具
六、使用Mysql內置自帶的慢查詢分析工具mysqldumpslow
解決問題:文件太長,不可能一條一條的找,就需要用到此工具定位查看DESKTOP-2EKGE5-show.log文件的內容,比如mysql按時間排序輸出等操作
在Mysql/bin目錄下,mysqldumpslow.pl,就是需要工具去運行
在命令行,進入這個位置使用此命令
perl mysqldumpslow.pl -a -s t -t 5 D:/Mysql/data/DESKTOP-2EKGE5-show.log
查詢結果
命令介紹說明
perl mysqldumpslow.pl -a -s t -t 5 D:/Mysql/data/DESKTOP-2EKGE5-show.log //-s t是指代表總時間排序 ,-t 5表示要取出前面5條 存到文件中 2、-t top 指定取前面幾條作爲結果輸出 3、-a 不將數字和字符串抽象成N和S |
剛開始查詢那條時間爲0,這個也是我不清楚的地方,反正第一條記錄的數據可能會出錯
七、附加Mysql的Global全局session設置說明
show variables like 'long_query_time' 查詢慢查詢時間(show VARIABLES查看系統命令)
global什麼時候生效,它是什麼很有意思?
概念
- global是全局的,沒有global是局部的
- set global就是動態設置參數,相當於在my.ini裏面設置一樣,但是重啓服務後會失效,當然它不需要重啓服務就可以生效
- 它不會覆蓋session變量值(session指my.ini可以配置的屬性名),就是my.ini裏面設置了這個值,就不會改變值
- 只有當沒有my.ini沒有設置這個值,纔會生效,而且生效要navicat中要新建查詢
解釋1:
global是全局的,如果my.ini配置文件沒有設置,在用global修飾設置之後都會生效,除非重啓服務則失效
1、my.ini配置過,修改慢查詢時間(全局)
2、新建查詢,發現修改後不生效,因爲是按照my.ini配置文件配置的參數讀取
3、因爲配置文件剛纔設置了long_query_time,把它關掉,重啓服務
4、查詢得到10s,這個是默認的配置
5、修改慢查詢時間(全局)
6、新建查詢,修改成功
7、局部設置慢查詢變量
8、同一個窗口查詢,修改成功
9、新建查詢,失敗,因爲它修改是局部的