Mysql慢查询详解

慢查询的概念

慢查询日志,就是指mysql记录所有执行超过long_query_time (默认的时间为10秒)参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来帮助。默认的情况下,慢查询日志是关闭的,要使用慢日志查询功能,首先要开启慢查询日志功能。

-- 查看慢查询相关的参数
show VARIABLES like'%slow_query_log%'

常用的参数介绍:

slow_query_log

启动停止技术慢查询日志

slow_query_log_file

指定慢查询日志得存储路径及文件(默认和数据文件放一起

long_query_time

指定记录慢查询日志SQL执行时间得伐值(单位:秒,默认10秒)

log_queries_not_using_indexes

是否记录未使用索引的SQL

log_output

日志存放的地方【TABLE】【FILE】【FILE,TABLE】表、文件

启动慢查询

-- 开启慢查询日志
set GLOBAL slow_query_log= on;

-- 设置慢查询时间,这样SQL语句超过1S的都会记录到慢查询日志中。
set GLOBAL long_query_time= 1;

-- 查看超时时间设置
show VARIABLES  like '%long_query_time%'

执行一些sql语句,产生一些慢查询的sql,然后查询慢查询的日志文件:

慢查询日志中记录的内容 (越下面的内容越新)

慢查询的内容解析:

行号

内容

1

用户名、用户的IP信息、线程ID号

2

执行花费的时间【单位:毫秒】

3

执行获得锁的时间

4

获得的结果行数

5

扫描的数据行数

6

这SQL执行的具体时间

7

具体的SQL语句

慢查询分析工具 mysqldumpslow

常用的慢查询日志分析工具(mysqldumpslow)

汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

语法:

-- 语法
mysqldumpslow -s t -t 10 C:\PergramData\mysql\data\slow-mysql.log

-s 表示按照何种方式排序
    c 访问次数
    l 锁定时间
    r 返回记录
    t 查询时间
    al 平均锁定时间
    ar 平均返回记录数
    at  平均查询时间
-t 返回前面多少条数据
-g 后边搭配一个正则匹配模式,大小写不敏感

常用的指令:

得到返回记录集最多的10条SQL:
mysqldumpslow -s r -t  10 /var/lib/mysql/695f5026f0f6-slow.log

得到访问次数最多的10条SQL:
mysqldumpslow -s r -t  10 /var/lib/mysql/695f5026f0f6-slow.log

得到按照时间排序的前10条里面含有左连接的SQL:
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/695f5026f0f6-slow.log
也支持管道符命令
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/695f5026f0f6-slow.log | more //分页显示
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值