推薦學習:mysql影片教學
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表中。
2、查詢慢查詢日誌的開啟狀態與慢查詢日誌儲存的位置show variables like '%quer%';
參數說明:
3、查看存放日誌的形式
show variables like 'log_output';
4、永久開啟慢日誌
修改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> 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视频教程
以上是MySQL慢查詢日誌實操(圖文解析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!