推薦學習:
MySQL的慢查詢紀錄檔是MySQL提供的一種紀錄檔記錄,它用來記錄在MySQL中響應時間超過閥值(long_query_time,單位:秒)的SQL語句。預設情況下,MySQL不啟動慢查詢紀錄檔。本文簡單介紹如何開啟慢查詢紀錄檔,如何用mysqldumpslow分析慢查詢。
臨時開啟慢查詢紀錄檔(重新啟動失效)
set global slow_query_log = on;
注:如果想關閉慢查詢紀錄檔,只需要執行 set global slow_query_log = off; 即可。
臨時慢查詢時間臨界點 查詢時間高於這個臨界點的都會被記錄到慢查詢紀錄檔中(重新啟動失效)
set long_query_time = 1;
設定慢查詢儲存的方式(重新啟動失效)
set global log_output = file;
說明: 可以看到,我這裡設定為了file,就是說我的慢查詢紀錄檔是通過file體現的,預設是none,我們可以設定為table或者file,如果是table則慢查詢資訊會儲存到mysql庫下的slow_log表中。
show variables like '%quer%';
引數說明:
log_queries_not_using_indexes 如果值設定為ON,則會記錄所有沒有利用索引的查詢(效能優化時開啟此項,平時不要開啟)
show variables like 'log_output';
修改my.cnf
在組態檔my.cnf(一般為/etc/my.cnf)中的[mysqld] section增加如下引數。
[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若沒有指定,預設名字為hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1
其中,slow_query_log = 1,表示開啟慢查詢,0表示關閉
slow_query_log_file,指定慢查詢紀錄檔路徑,需要MySQL對該路徑有寫許可權
long_query_time = 1,表示查詢時間>=1秒才記錄紀錄檔,預設10s
log_queries_not_using_indexes = 1,表明記錄沒有使用索引的 SQL 語句
重新啟動MySQL服務,重新啟動MySQL後會看到/var/lib/mysql/slow-query.log檔案。
製造慢查詢並執行。如下:
mysql> select sleep(1);+----------+ | sleep(1) | +----------+ | 0 | +----------+ 1 row in set (1.00 sec)
慢查詢紀錄檔
開啟慢查詢紀錄檔檔案。可以看到上述慢查詢的SQL語句被記錄到紀錄檔中。
mysqldumpslow
mysqldumpslow是MySQL自帶的分析慢查詢的工具。該工具是Perl指令碼。
常用引數如下:
獲取存取次數最多的5個SQL語句:
按照時間排的top 5個SQL語句
$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log
按照時間排序且含有'like'的top 5個SQL語句
$ mysqldumpslow -s t -t 3 -g "like" /var/lib/mysql/slow-query.log
SET GLOBAL slow_query_log = 'OFF'; ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop; CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop; SET GLOBAL slow_query_log = 'ON'; DROP TABLE mysql.slow_log_drop;
推薦學習:
以上就是MySQL慢查詢紀錄檔實操(圖文解析)的詳細內容,更多請關注TW511.COM其它相關文章!