Mysql深入二:開啓慢查詢及慢查詢工具mysqldumpslow

目錄

一、慢查詢配置,及配置項說明

二、將上面的配置放入到Mysql安裝目錄的my.ini文件中

三、修改了配置文件,需要在命令行重啓一下mysql服務

四、去數據庫查詢語句,需要超過10s的語句纔會被記錄,當然上面你可以自己設置慢查詢的時間,從而記錄,最終都會寫到data目錄下的DESKTOP-2EKGE5-show.log文件中,這都是上面配置文件設置的

五、安裝慢查詢輔助工具軟件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe

六、使用Mysql內置自帶的慢查詢分析工具mysqldumpslow

七、附加Mysql的Global全局session設置說明


一、慢查詢配置,及配置項說明

#開啓慢查詢
#日記存放的地方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條 存到文件中
1、-s order (c,t,l,r,at,al,ar) 
         c:總次數
         t:總時間
         l:鎖的時間
         r:總數據行
         at,al,ar  :t,l,r平均數  【例如:at = 總時間/總次數】

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、新建查詢,失敗,因爲它修改是局部的

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章