前言
資料庫日志記錄了使用者對資料庫的各種操作及資料庫發生的各種事件。能幫助資料庫管理者追蹤、分析問題。MySQL提供了錯誤日志、二進制日志、查詢日志、慢查詢日志。
MySQL的慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值(long_query_time,機關:秒)的SQL語句。預設情況下,MySQL不啟動慢查詢日志。本文簡單介紹如何開啟慢查詢日志,如何用mysqldumpslow分析慢查詢。
開啟慢查詢日志
修改my.cnf
在配置檔案my.cnf(一般為/etc/my.cnf)中的[mysqld] section增加如下參數。
其中,
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檔案。
檢查參數
通過如下指令可以檢查上述參數配置情況。
測試
慢查詢
制造慢查詢并執行。如下。
慢查詢日志
打開慢查詢日志檔案。可以看到上述慢查詢的SQL語句被記錄到日志中。
慢查詢分析工具
mysqldumpslow
mysqldumpslow是MySQL自帶的分析慢查詢的工具。該工具是Perl腳本。
常用參數如下。
例子
我們執行了多次類似如下的查詢。
擷取通路次數最多的5個SQL語句
按照時間排的top 5個SQL語句
按照時間排序且含有'like'的top 5個SQL語句
小結
預設情況下,MySQL不啟動慢查詢日志。若要檢查慢查詢,需要我們手動設定這個參數。一般情況下,若非調優需要,不建議啟動該參數,因為開啟慢查詢日志或多或少會帶來一定的性能影響。慢查詢日志支援将日志記錄寫入檔案,也支援将日志記錄寫入資料庫表。
本文作者:zuozhao
閱讀原文
本文為雲栖社群原創内容,未經允許不得轉載。