MYSQL慢查询日志的查看方式

56次阅读
没有评论

共计 2339 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“MYSQL 慢查询日志的查看方式”,在日常操作中,相信很多人在 MYSQL 慢查询日志的查看方式问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL 慢查询日志的查看方式”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

前言: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 慢查询日志的查看方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2339字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)