加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL慢查询日志的查看方法

发布时间:2022-01-20 14:16:19 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍MYSQL慢查询日志的查看方式,在日常操作中,相信很多人在MYSQL慢查询日志的查看方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答MYSQL慢查询日志的查看方式的疑惑有所帮助!接下来,请跟着小编一起来学习
       这篇文章主要介绍“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
 
-v verbose
 
-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慢查询日志的查看方式”的学习就结束了,希望能够解决大家的疑惑。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读