Mysql 慢日誌配置和分析

2021-08-14 23:17:54 字數 1892 閱讀 7732

[mysqld]

// 開啟慢查詢

slow_query_log = 1

// 設定慢查詢時間 10s,如果不配置long_query_time,預設是10s

long_query_time=10

// 慢查詢日誌儲存路徑

slow_query_log_file= /var/log/server/mysql/mysql_sloq.log

// 開啟 記錄沒有使用索引查詢語句

log-queries-not-using-indexes = 1

==分析慢日誌檔案

日誌分析工具

mysqldumpslow 在mysql的bin目錄下

比如:

得到返回記錄集最多的10個sql。

mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log

得到訪問次數最多的10個sql

mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log

得到按照時間排序的前10條裡面含有左連線的查詢語句。

mysqldumpslow -s t -t 10 -g 「leftjoin」 /database/mysql/mysql06_slow.log

另外建議在使用這些命令時結合 | 和more 使用 ,否則有可能出現刷屏的情況。

mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more

注意:不同版本mysql生成的慢日誌檔案需要用相應版本帶的mysqldumpslow來分析。

==高階分析

在mysql中輸入命令:

showvariables like 『%quer%』;

主要掌握以下的幾個引數:

(1)slow_query_log的值為on為開啟慢查詢日誌,off則為關閉慢查詢日誌。

(2)slow_query_log_file的值是記錄的慢查詢日誌到檔案中(注意:預設名為主機名.log,慢查詢日誌是否寫入指定檔案中,需要指定慢查詢的輸出日誌格式為檔案,相關命令為:show variables like 『%log_output%』;去檢視輸出的格式)。

(3)long_query_time指定了慢查詢的閾值,即如果執行語句的時間超過該閾值則為慢查詢語句,預設值為10秒。

(4)log_queries_not_using_indexes如果值設定為on,則會記錄所有沒有利用索引的查詢(注意:如果只是將log_queries_not_using_indexes設定為on,而將slow_query_log設定為off,此時該設定也不會生效,即該設定生效的前提是slow_query_log的值設定為on),一般在效能調優的時候會暫時開啟。

問題:設定mysql慢查詢的輸出日誌格式為檔案還是表,或者兩者都有?

通過log_output的值可以檢視到輸出的格式, 預設為檔案。當然,我們也可以設定輸出的格式為文字,或者同時記錄文字和資料庫表中,設定的命令如下:

問題:如何查詢當前慢查詢的語句的個數?

在mysql中有乙個變數專門記錄當前慢查詢語句的個數:

輸入命令:show global status like 『%slow%』;

mysql慢日誌解析 mysql 慢日誌分析

啟用 slow log 有兩種啟用方式 1,在my.cnf 裡 通過 log slow queries file name 2,在mysqld程序啟動時,指定 log slow queries file name 選項 比較的五款常用工具 mysqldumpslow,mysqlsla,myprofi...

Mysql 慢查詢和慢查詢日誌分析

眾所周知,大訪問量的情況下,可新增節點或改變架構可有效的緩解資料庫壓力,不過一切的原點,都是從單台mysql開始的。下面總結一些使用過或者研究過的經驗,從配置以及調節索引的方面入手,對mysql進行一些優化。第一步應該做的就是排查問題,找出瓶頸,所以,先從日誌入手 開啟慢查詢日誌 mysql sho...

Mysql 慢查詢和慢查詢日誌分析

眾所周知,大訪問量的情況下,可新增節點或改變架構可有效的緩解資料庫壓力,不過一切的原點,都是從單台mysql開始的。下面總結一些使用過或者研究過的經驗,從配置以及調節索引的方面入手,對mysql進行一些優化。第一步應該做的就是排查問題,找出瓶頸,所以,先從日誌入手 開啟慢查詢日誌 mysql sho...