MySQL慢查詢日誌如何開啓以及分析

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章