mysql有一個功能就是可以log下來運行的比較慢的sql語句默認是沒有這個log的為了開啟這個功能要修改f或者在mysql啟動的時候加入一些參數如果在f裡面修改需增加如下幾行
long_query_time =
logslowqueries = /var/youpath/slowlog
logqueriesnotusingindexes
long_query_time 是指執行超過多久的sql會被log下來這裡是秒
logslowqueries 設置把日志寫在那裡可以為空系統會給一個缺省的文件host_nameslowlog我生成的log就在mysql的data目錄
logqueriesnotusingindexes 就是字面意思log下來沒有使用索引的query
把上述參數打開運行一段時間就可以關掉了省得影響生產環境
接下來就是分析了我這裡的文件名字叫hostslowlog
先mysqldumpslow –help以下俺主要用的是
s ORDER what to sort by (t at l al r ar etc) ‘at’ is default
t NUM just show the top n queries
g PATTERN grep: only consider stmts that include this string
s是order的順序說明寫的不夠詳細俺用下來包括看了代碼主要有
ctlr和acatalar分別是按照query次數時間lock的時間和返回的記錄數來排序前面加了a的時倒敘
t是top n的意思即為返回前面多少條的數據
g後邊可以寫一個正則匹配模式大小寫不敏感的
mysqldumpslow s c t hostslowlog
mysqldumpslow s r t hostslowlog
上述命令可以看出訪問次數最多的個sql語句和返回記錄集最多的個sql
mysqldumpslow t s t g “left join” hostslowlog
這個是按照時間返回前條裡面含有左連接的sql語句
用了這個工具就可以查詢出來那些sql語句是性能的瓶頸進行優化比如加索引該應用的實現方式等
From:http://tw.wingwit.com/Article/program/SQL/201405/30843.html