日誌-Mysql慢日誌查詢

前言:
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

find / -name my.cnf


或者
mysql --help | grep my.cnf

這裏有四個文件,優先級從左到右,前者不存在依次往下找

找到了配置文件在/etc/my.cnf

2.編輯配置文件,打開慢日誌查詢
vi /usr/my.cnf


加上如下代碼:
#最大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日誌,或者其它工具也可以,通過工具配合可以更好的分析。


相關文章:
php錯誤日誌:檢測php運行時或用戶自記錄錯誤日誌:http://blog.csdn.net/ty_hf/article/details/55505262
mysql慢日誌:記錄mysql服務器中影響性能的SQL:http://blog.csdn.net/ty_hf/article/details/55504172

本文地址:http://blog.csdn.net/ty_hf/article/details/55505612
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章