Mysql的慢查詢


1.1. 什么是慢查詢

慢查詢日志,顧名思義,就是查詢慢的日志,是指mysql記錄所有執行超過long_query_time參數設定的時間閾值的SQL語句的日志。該日志能為SQL語句的優化帶來很好的幫助。默認情況下,慢查詢日志是關閉的,要使用慢查詢日志功能,首先要開啟慢查詢日志功能。

1.2. 慢查詢配置

1.2.1. 慢查詢基本配置

  •  slow_query_log 啟動停止技術慢查詢日志
  • slow_query_log_file 指定慢查詢日志得存儲路徑及文件(默認和數據文件放一起)
  • long_query_time 指定記錄慢查詢日志SQL執行時間得伐值(單位:秒,默認10秒)
  • log_queries_not_using_indexes  是否記錄未使用索引的SQL
  • log_output 日志存放的地方【TABLE】【FILE】【FILE,TABLE】

配置了慢查詢后,它會記錄符合條件的SQL

包括:

  • 查詢語句
  • 數據修改語句
  • 已經回滾得SQL

1.2.2. 實操:

通過下面命令查看下上面的配置:

show VARIABLES like '%slow_query_log%'

show VARIABLES like '%slow_query_log_file%'

show VARIABLES like '%long_query_time%'

show VARIABLES like '%log_queries_not_using_indexes%'

show VARIABLES like 'log_output'

設置慢查詢的參數:

set global long_query_time=0;   ---默認10秒,這里為了演示方便設置為0

set GLOBAL  slow_query_log = 1; --開啟慢查詢日志

set global log_output='FILE,TABLE'  --項目開發中日志只能記錄在日志文件中,不能記表中

設置完成后,查詢一些列表可以發現慢查詢的日志文件里面有數據了。

但是在我的電腦上,不知道為啥,這個時間總是不能正常的執行sql結果。更新不了;

所以我們用這樣的方法就可以了:

找到my.cnf,添加如下內容

# 添加慢查詢日志
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1

1.3.  慢查詢分析

慢查詢的日志記錄非常多,要從里面找尋一條查詢慢的日志並不是很容易的事情,一般來說都需要一些工具輔助才能快速定位到需要優化的SQL語句,下面介紹兩個慢查詢輔助工具

 

1.3.1.   Mysqldumpslow

常用的慢查詢日志分析工具,匯總除查詢條件外其他完全相同的SQL,並將分析結果按照參數中所指定的順序輸出。

 

語法:

mysqldumpslow -s r -t 10 slow-mysql.log

-s order (c,t,l,r,at,al,ar)

         c:總次數

         t:總時間

         l:鎖的時間

         r:總數據行

         at,al,ar  :t,l,r平均數  【例如:at = 總時間/總次數】

 

  -t  top   指定取前面幾天作為結果輸出

執行 mysqldumpslow.pl 要安裝一個程序,這個是prel命令,具體的可以參考

https://jingyan.baidu.com/article/9f7e7ec0b798ae6f281554e9.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM