mysql慢查詢日志分析


mysql

有一個功能就是可以log下來運行的比較慢的sql語句,默認是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql 啟動的時候加入一些參數。
如果在my.cnf里面修改,需增加如下幾行
long_query_time = 10
log-slow-queries =

long_query_time
是指執行超過多久的sql會被log下來,這里是10秒。
log-slow-queries 設置把日志 寫在那里,為空的時候,系統會給慢查詢 日志賦予主機名,並被附加slow.log
    如果設置了參數log-long-format,那么所有沒有使用索引的查詢也將被記錄。在文件my.cnf或my.ini中加入下面這一行可以記錄這些查詢 這是一個有用的日志。它對於性能的影響不大(假設所有查詢都很快),並且強調了那些最需要注意的查詢(丟失了索引或索引沒有得到最佳應用)
# Time: 070927  8:08:52 # User@Host: root[root] @  [192.168.0.20] # Query_time: 372  Lock_time: 136  Rows_sent: 152  Rows_examined: 263630
select id, name from manager where id in (66,10135);
這是慢查詢 日志中的一條,用了372秒,鎖了136秒,返回152行,一共查了263630行
    如果日志內容很多,用眼睛一條一條去看會累死,mysql 自帶了分析的工具,使用方法如下:
命令行下,進入mysql /bin 目錄,輸入mysqldumpslow –help--help 可以看到這個工具的參數,主要有
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
  --verbose    verbose
  --debug      debug
  --help       write this text to standard output
  -v           verbose
  -d           debug
  -s ORDER     what to sort by (t, at, l, al, r, ar etc), 'at' is default
  -r           reverse the sort order (largest last instead of first)
  -t NUM       just show the top n queries
  -a           don't abstract all numbers to N and strings to 'S'
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME      name of server instance (if using mysql .server startup scrīpt)
  -l           don't subtract lock time from total time

-s
,是order 的順序,說明寫的不夠詳細,俺用下來,包括看了代碼,主要有

c,t,l,r
ac,at,al,ar ,分別是按照query 次數,時間,lock 的時間和返回的記錄數來排序,前面加了a 的時倒敘

-t
,是top n 的意思,即為返回前面多少條的數據

-g
,后邊可以寫一個正則匹配模式,大小寫不敏感的


mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出訪問次數最多的20sql 語句和返回記錄集最多的20sql

mysqldumpslow -t 10 -s t -g “left join” host-slow.log
這個是按照時間返回前10 條里面含有左連接的sql 語句

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com