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運行的情況。能更供更多的指導。 有了慢查詢日志,通過慢查詢日志分析工具很容易得到一份不錯的分析結果。