mysql之慢日志查询
轉(zhuǎn)自https://my.oschina.net/wuweixiang/blog/2987434
?
首先得配置my.cnf:
#====================================================================================================================# #================================================== 慢日志 ===========================================================# #====================================================================================================================# #是否啟用慢查詢 slow_query_log = on #日志位置 - > 注意 目標(biāo)文件夾權(quán)限, 需要 MySQL 的所有者可寫(xiě); 否則會(huì)強(qiáng)制不啟用 slow_query_log_file = /var/lib/mysql/mysql-slow.log #添加此項(xiàng)即打開(kāi)未添加索引的所有日志到慢日志中, 可不打開(kāi) log_queries_not_using_indexes = on #小于此值1s會(huì)記錄到慢日志 . 默認(rèn)為 10s,可根據(jù)自己實(shí)際情況進(jìn)行設(shè)置 long_query_time = 1具體的使法如下:
root@mysql:/# mysqldumpslow -s c -t 40 /var/lib/mysql/mysql-slow.log出來(lái)的結(jié)果是訪問(wèn)次數(shù)最多的40個(gè)sql,幾個(gè)參數(shù)大概意思如下:
-t 顯示多少條 -s 排序,默認(rèn)是at。c是次數(shù),t是時(shí)間,l是lock時(shí)間,r是返回結(jié)果。如果是ac,at,al,ar則是倒序 -g 可以用正則匹配部分語(yǔ)句可以參考mysqldumpslow –help,通過(guò)這個(gè)工具可以看到哪些鎖表,或者其他性能問(wèn)題,還能看到某些SQL_NO_CACHE提示呢,去想辦法優(yōu)化把!
root@mysql:/# mysqldumpslow --help perl: warning: Setting locale failed. perl: warning: Please check that your locale settings:LANGUAGE = (unset),LC_ALL = (unset),LANG = "en_US.UTF-8"are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 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 (al, at, ar, c, l, r, t), 'at' is defaultal: average lock timear: average rows sentat: average query timec: countl: lock timer: rows sentt: query time -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 script)-l don't subtract lock time from total time在生產(chǎn)環(huán)境中,如果要手工分析日志,查找、分析SQL,顯然是個(gè)體力活,MySQL提供了日志分析工具mysqldumpslow
-s, 是表示按照何種方式排序,
c: 訪問(wèn)計(jì)數(shù)
l: 鎖定時(shí)間
r: 返回記錄
t: 查詢時(shí)間
al:平均鎖定時(shí)間
ar:平均返回記錄數(shù)
at:平均查詢時(shí)間
-t, 是top n的意思,即為返回前面多少條的數(shù)據(jù);
-g, 后邊可以寫(xiě)一個(gè)正則匹配模式,大小寫(xiě)不敏感的;
比如
得到返回記錄集最多的10個(gè)SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
得到訪問(wèn)次數(shù)最多的10個(gè)SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
得到按照時(shí)間排序的前10條里面含有左連接的查詢語(yǔ)句。
mysqldumpslow -s t -t 10 -g “l(fā)eft join” /database/mysql/mysql06_slow.log
另外建議在使用這些命令時(shí)結(jié)合 | 和more 使用 ,否則有可能出現(xiàn)刷屏的情況。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
轉(zhuǎn)載于:https://www.cnblogs.com/heroinss/p/10912140.html
總結(jié)
以上是生活随笔為你收集整理的mysql之慢日志查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 箭头标线的类型和面积
- 下一篇: oracle学习笔记(十八) PL