MySQL慢查詢日誌
- 2019 年 10 月 7 日
- 筆記
一、是什麼是慢查詢日誌
MySQL 的慢查詢日誌是MySQL提供的一種日誌記錄,他用來記錄在MySQL中響應時間超過閥值的語句。
二、使用
1、查看是否開啟慢查詢
使用命令 :
show variables like '%slow_query_log%';
看看slow_query_log 是否為 ON,默認不開啟非OFF。

2、開啟慢查詢
set global slow_query_log=1開啟了慢查詢日誌只對當前資料庫生效,MySQL重啟後則會失效。

修改閾值為3
set global long_query_time=3;

查看閾值是多少

3、查看慢查詢日誌存放路徑
使用命令:
show variables like 'slow_query_log_file';

4、查看慢查詢日誌
執行一句4秒的查詢語句:

打開日誌文件查看:

5、查看有多少慢查詢
使用命令:
show global status like 'Slow_queries';

三、mysqldumpslow工具
在生產環境中,如果要手工分析日誌,查找、分析SQL,顯然是個體力活。
MySQL提供了日誌分析工具 mysqldumpslow
查看mysqldumpslow的幫助資訊:

比如,得到返回記錄集最多的10個SQL。
- mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log得到訪問次數最多的10個SQL
- mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log得到按照時間排序的前10條裡面含有左連接的查詢語句。
- mysqldumpslow -s t -t 10 -g 「left join」 /database/mysql/mysql06_slow.log另外建議在使用這些命令時結合 | 和more 使用 ,否則有可能出現刷屏的情況。
- mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
4、注意
具體環境中,運行時間超過long_query_time值的SQL語句,則會被記錄到慢查詢日誌中。long_query_time的默認值為10,意思是記錄運行10秒以上的語句。默認情況下,MySQL資料庫並不啟動慢查詢日誌,需要手動來設置這個參數。當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日誌會或多或少帶來一定的性能影響。慢查詢日誌支援將日誌記錄寫入文件和資料庫表。
五、尾巴
筆記+學習來自b站尚矽谷周陽的MySQL高級慢查詢日誌。
整理引用來自部落格:
https://blog.csdn.net/qq_40884473/article/details/89455740