[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 「left
join
」 /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...