前言:
mysql慢日誌有什麼用?當然是查看系統中運行的慢sql啦,根據這裏的信息,在對自己的程序或者sql語句進行優化。
MySQL數據庫是常見的兩個瓶頸是CPU和I/O的瓶頸,
1.CPU在飽和的時候一般發生在數據裝入內存或從磁盤上讀取數據時候。
2.磁盤I/O瓶頸發生在裝入數據遠大於內存容量的時候。
3.在應用分佈在網絡上,那麼查詢量相當大的時候那麼平瓶頸就會出現在網絡上。
4.查詢量正常,但是加載很慢,就需要綜合分析查看了
通過慢日誌,show processlist,找出直接查詢慢的sql,
進而結合其他命令,分析出根本原因在哪兒?是鎖還是linux的cpu,mem瓶頸?等等(關於linux下系統的分析,後邊博文會系列展開敘述)
查看是否開啓了mysql慢日誌查詢
show VARIABLES like "%slow%";
如果沒有開啓,如下兩種方法開啓。
一.通過改變量開啓
使用sql語句來修改:
語句列出來的變量,運行如下sql:
set global slow_query_log = ON; //打開慢日誌查詢
set global slow_query_log_file = '/var/mysql-slow.log';
set global long_query_time=1; #設置大於1s的sql語句記錄下來
注意:重啓以後就失效了,mysql啓動加載的是配置文件裏的設置。
二.改配置文件
1.先尋找mysql配置文件 my.cnf
或者
mysql --help | grep my.cnf
這裏有四個文件,優先級從左到右,前者不存在依次往下找
找到了配置文件在/etc/my.cnf
2.編輯配置文件,打開慢日誌查詢
加上如下代碼:
#最大sql運行時間
long_query_time=1
#slow_query_log,打開慢日誌查詢
slow_query_log=1
#慢日誌存放地址
slow_query_log_file=/var/mysql-query-slow.log
#將所有沒有使用帶索引的查詢語句全部寫到慢查詢日誌中
log_queries_not_using_indexes=1
最後
1、日誌不能說明一切問題,知識表象,可能跟鎖表、系統繁忙的偶發性有關,當然,如果某條SQL語句經常查詢慢那基本可以判斷是可以再次優化的。
2、不要開啓log-queries-not-using-indexes沒有索引查詢記錄功能,這個功能實際用處不大。就是記錄SQL查詢的時候,沒有索引的通通記錄。雖然索引對查詢的速度有影響,但要看數據量大小。因爲開啓了這個功能以後,select * from
tab這樣的查詢也會被記錄在日誌中,很快日誌文件就會被垃圾信息給充滿,從而影響主要的查詢慢日誌記錄的查看。
3、MySQL自帶了mysqldumpslow工具用來分析slow query日誌,或者其它工具也可以,通過工具配合可以更好的分析。
相關文章:
本文地址:http://blog.csdn.net/ty_hf/article/details/55505612