萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql 慢查詢日志開啟與使用詳解

mysql 慢查詢日志開啟與使用詳解

mysql 慢查詢日志打開的方法很簡單,我們只要設置set global long_query_time=0.000001;,這要就是毫秒級別以下的慢日志記錄

MySQL慢日志往往是大家定位SQL性能問題。通過慢日志分析可以調整索引使用。這是使用最多的一個功能。

目前MySQL也支持毫秒級別以下的慢日志記錄,這個功能其實有很多用處,這裡大概給大家講解一下。該功能開啟參數:long_query_time

查看慢查詢是否開啟:

 代碼如下 復制代碼

mysql> show variables like '%slow%';
+---------------------+-------------------------+
| Variable_name       | Value                    |
+---------------------+-------------------------+
| log_slow_queries    | ON                        |
| slow_launch_time    | 2                          |
| slow_query_log      | ON                         |
| slow_query_log_file | D:/log/slow.txt       |
+---------------------+-------------------------+

其中,各參數說明如下:

slow_launch_time: 慢查詢超過的執行時間值

 slow_query_log: 是否打開慢查詢日志功能

show_query_log_file:慢查詢日志目錄 


通常使用這個參數的幾個環境:

需要得到一個業務的所有SQL可以在測試環境中MySQL的long_query_time設置為0.000001:

 代碼如下 復制代碼

set global long_query_time=0.000001;
 
flush logs;

也可以直接在找到 MySQL 的配置文件 ,my.cnf (Windows 為 my.ini ),在 MySQL 下增加下面幾行

 代碼如下 復制代碼

log-slow-queries ="D:/xampp/mysql/long.txt"
long_query_time = 1

log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以為空,系統會給一個缺省的文件host_name-slow.log)
long_query_time=2 (記錄超過的時間,默認為10s)
log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據情況決定是否開啟)
log-long-format (如果設置了,所有沒有使用索引的查詢也將被記錄)

上面的 2 是查詢的時間,即當一條 SQL 執行時間超過2秒的時候才記錄,/usr/var/slowquery.log 是日志記錄的位置。

然後重新啟動MySQL服務

2、 MySQL 配置文件的位置

Windows:Windows 的配置文件為 my.ini,一般在 MySQL 的安裝目錄下或者 c:Windows 下。

Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下。


這樣基本上所有對MySQL請求的sql都會記錄到慢日志中。通過日志分析可以全面了解一下SQL樣式及整體運行調用分布。(重要的庫可以考慮開啟該參數記錄相應的log用於審計使用)

同樣對於生產環境,可以通過開啟該參數,定期收集一下線上的SQL運行情況,做一些對比,方便了解目前線上SQL運行的情況。能更供更多的指導。 有了慢查詢日志,通過慢查詢日志分析工具很容易得到一份不錯的分析結果。

copyright © 萬盛學電腦網 all rights reserved