mysql之慢日志查询
轉自https://my.oschina.net/wuweixiang/blog/2987434
?
首先得配置my.cnf:
#====================================================================================================================# #================================================== 慢日志 ===========================================================# #====================================================================================================================# #是否啟用慢查詢 slow_query_log = on #日志位置 - > 注意 目標文件夾權限, 需要 MySQL 的所有者可寫; 否則會強制不啟用 slow_query_log_file = /var/lib/mysql/mysql-slow.log #添加此項即打開未添加索引的所有日志到慢日志中, 可不打開 log_queries_not_using_indexes = on #小于此值1s會記錄到慢日志 . 默認為 10s,可根據自己實際情況進行設置 long_query_time = 1具體的使法如下:
root@mysql:/# mysqldumpslow -s c -t 40 /var/lib/mysql/mysql-slow.log出來的結果是訪問次數最多的40個sql,幾個參數大概意思如下:
-t 顯示多少條 -s 排序,默認是at。c是次數,t是時間,l是lock時間,r是返回結果。如果是ac,at,al,ar則是倒序 -g 可以用正則匹配部分語句可以參考mysqldumpslow –help,通過這個工具可以看到哪些鎖表,或者其他性能問題,還能看到某些SQL_NO_CACHE提示呢,去想辦法優化把!
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在生產環境中,如果要手工分析日志,查找、分析SQL,顯然是個體力活,MySQL提供了日志分析工具mysqldumpslow
-s, 是表示按照何種方式排序,
c: 訪問計數
l: 鎖定時間
r: 返回記錄
t: 查詢時間
al:平均鎖定時間
ar:平均返回記錄數
at:平均查詢時間
-t, 是top n的意思,即為返回前面多少條的數據;
-g, 后邊可以寫一個正則匹配模式,大小寫不敏感的;
比如
得到返回記錄集最多的10個SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
得到訪問次數最多的10個SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
得到按照時間排序的前10條里面含有左連接的查詢語句。
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
另外建議在使用這些命令時結合 | 和more 使用 ,否則有可能出現刷屏的情況。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
轉載于:https://www.cnblogs.com/heroinss/p/10912140.html
總結
以上是生活随笔為你收集整理的mysql之慢日志查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 箭头标线的类型和面积
- 下一篇: ubuntu截图软件deepin scr