1、MySQL慢查詢日誌是什麼
(1)MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄MySQL中查詢時間超過(大於)設置閾值(long_query_time)的語句,記錄到慢查詢日誌中。
(2)long_query_time的默認值是10。
2、如何開啓MySQL慢查詢日誌
默認情況下,MySQL沒有開啓慢查詢日誌。需要手動打開,如果不是調優需要的話,不建議開啓,因爲開啓會帶來一定的性能影響,慢查詢日誌支持將日誌記錄寫入文件。
(1)開啓設置
-- 查看慢查詢日誌是否開啓
show variables like '%slow_query_log%';
-- 開啓慢查詢日誌,只對當前數據庫生效,並且重啓數據庫後失效
set global slow_query_log = 1;
-- 查看慢查詢日誌的閾值,默認10s
show variables like '%long_query_time%';
-- 設置閾值
set long_query_time = 3;
(2)如果需要永久生效則修改配置文件my.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=/var/lib/mysql/atguigu-slow.log
long_query_time=3
log_output=FILE
(3)運行慢查詢sql,查看慢查詢日誌
select sleep(4);
(4)查詢當前系統有多少條慢查詢記錄
show global status like '%Slow_queries%';
3、日誌分析工具mysqldumpslow
慢查詢日誌多了,不利於我們進行分析。mysqldumpslow能將相同的慢SQL歸類,並統計出相同的SQL執行的次數,每次執行耗時多久、總耗時,每次返回的行數、總行數,以及客戶端連接信息等。
通過 --help命令,就能知道如何使用Mysqlsumpslow
- -s 表示按何種方式排序。
- c 訪問次數。
- l 鎖定時間。
- r 返回記錄。
- t 查詢時間。
- al 平均鎖定時間。
- ar 平均返回記錄數。
- at 平均查詢時間。
- -t 返回前面多少條數據。
- -g 後面搭配一個正則匹配模式,大小寫不敏感。
# 得到返回記錄集最多的10 個SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log
# 得到訪問次數最多的10 個SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log
# 得到按照時間排序的前10 條裏面含有左連接的查詢語句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log
# 另外建議在使用這些命令時結合| 和more 使用,否則有可能出現爆屏情況
mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more