十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍“MySQL慢查询日志的查看方式”,在日常操作中,相信很多人在MYSQL慢查询日志的查看方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL慢查询日志的查看方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联面向各种领域:纯水机等成都网站设计、全网整合营销推广解决方案、网站设计等建站排名服务。
前言:mysql的慢查询日志是数据库调优的一个主要依据,但是跟踪出来的文件是一个文本文件,查看起来费时费力,mysql也提供了一个工具便于从文本文件里面查找的工具mysqldumpslow。
Mysqldumpslow是安装数据库时会自带的一个软件,在目录/usr/local/mysql/bin下面
[root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow --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 -vverbose -d debug -s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default //表示排序的类型 al: average lock time //按平均锁定时间排序 ar: average rows sent //平均获取行数排序 at: average query time //平均查询时间排序 c: count //执行次数 l: lock time //锁定时间 r: rows sent //获取行数排序 t: 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 |
[root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -s c -t 10 /data/JOEONE-IPOSDS-01-slow.log
查看访问次数最多的10个sql语句;
l [root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -s r -t 10 /data/JOEONE-IPOSDS-01-slow.log
查看返回记录集最多的10个sql语句
l [root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -t 10 -s t -g "left join" /data/JOEONE-IPOSDS-01-slow.log
查看使用left join的语句
Count: 132 Time=4.21s (555s) Lock=0.00s (0s) Rows=0.4 (53), ipos[ipos]@3hosts 执行次数 平均执行时间/总共执行时间 平均等待锁时间/总等待锁时间 平均获取行数/总获取行数 用户 详细的SQL语句 SELECT cus.zjhfrq,cus.zjrq,cus.headphoto,cus.sr1,cus.sr2,cus.vip,cus.xb,cus.Id,cus.gkdm,cus.gkmc,cus.sj,cus.dh,cus.dz,cus.bz,cus.scdh,cus.sy,cus.lylx,cus.cdbh,cus.jdrq,cus.zd_id,kh.khmc as zdmc, dj.khmc as djzdmc,cus.xfje,cus.dj_zd FROM ipos_customer cus LEFT JOIN com_base_kehu kh ON kh.Id=cus.zd_id LEFT JOIN com_base_kehu dj ON dj.Id=cus.dj_zd WHERE N=N and ( ((cus.zd_id='S'OR cus.dj_zd='S') and cus.vip=N) or ((cus.zd_id='S'OR cus.dj_zd='S') and cus.vip=N)) and cus.sj like 'S' and N=N and N=N order by cus.gkdm DESC LIMIT N |
初步感觉这个语句是可以优化的;
总结:今天又看了公司的数据库通过慢查询日志把一条运行10S的语句优化成0.1S的语句,心情倍感高兴;但这只是万里长征的第一步,毕竟当一个数据库运行到领导要DBA来优化的地步,说明已经有很多的SQL语句有性能问题了,所以路还长着了。
到此,关于“MYSQL慢查询日志的查看方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!