天天看點

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

前言

資料庫日志記錄了使用者對資料庫的各種操作及資料庫發生的各種事件。能幫助資料庫管理者追蹤、分析問題。MySQL提供了錯誤日志、二進制日志、查詢日志、慢查詢日志。

MySQL的慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值(long_query_time,機關:秒)的SQL語句。預設情況下,MySQL不啟動慢查詢日志。本文簡單介紹如何開啟慢查詢日志,如何用mysqldumpslow分析慢查詢。

開啟慢查詢日志

修改my.cnf

在配置檔案my.cnf(一般為/etc/my.cnf)中的[mysqld] section增加如下參數。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

其中,

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線上開啟慢日志,如何開啟MySQL慢查詢日志

重新開機MySQL後會看到/var/lib/mysql/slow-query.log檔案。

檢查參數

通過如下指令可以檢查上述參數配置情況。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

測試

慢查詢

制造慢查詢并執行。如下。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

慢查詢日志

打開慢查詢日志檔案。可以看到上述慢查詢的SQL語句被記錄到日志中。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

慢查詢分析工具

mysqldumpslow

mysqldumpslow是MySQL自帶的分析慢查詢的工具。該工具是Perl腳本。

常用參數如下。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

例子

我們執行了多次類似如下的查詢。

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

擷取通路次數最多的5個SQL語句

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

按照時間排的top 5個SQL語句

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

按照時間排序且含有'like'的top 5個SQL語句

mysql線上開啟慢日志,如何開啟MySQL慢查詢日志

小結

預設情況下,MySQL不啟動慢查詢日志。若要檢查慢查詢,需要我們手動設定這個參數。一般情況下,若非調優需要,不建議啟動該參數,因為開啟慢查詢日志或多或少會帶來一定的性能影響。慢查詢日志支援将日志記錄寫入檔案,也支援将日志記錄寫入資料庫表。

本文作者:zuozhao

閱讀原文

本文為雲栖社群原創内容,未經允許不得轉載。