Mysql慢查询笔记

什么是慢查询

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

慢查询配置

  • slow_query_log 启动停止技术慢查询日志
  • slow_query_log_file 指定慢查询日志得存储路径及文件(默认和数据文件放一起)
  • long_query_time 指定记录慢查询日志 SQL 执行时间得伐值(单位:秒,默认 10 秒)
  • log_queries_not_using_indexes 是否记录未使用索引的 SQL
  • log_output 日志存放的地方【TABLE】【FILE】【FILE,TABLE】

通过下面命令查看下上面的配置:
show VARIABLES like ‘%slow_query_log%’
show VARIABLES like ‘%slow_query_log_file%’
show VARIABLES like ‘%long_query_time%’
show VARIABLES like ‘%log_queries_not_using_indexes%’ show VARIABLES like ‘log_output’
set global long_query_time=0; —默认 10 秒,这里为了演示方便设置为 0
set GLOBAL slow_query_log = 1; --开启慢查询日志
set global log_output=‘FILE,TABLE’; --项目开发中日志只能记录在日志文件中,不能记表中

使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。
如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)。

my.cnf要增加或修改参数slow_query_log 和slow_query_log_file,如下所示

slow_query_log = 1
slow_query_log_file = /tmp/mysql_slow.log

慢查询解读

从慢查询日志里面摘选一条慢查询日志,数据组成如下

# User@Host: root[root] @  [118.26.128.202]  Id:  3253
# Query_time: 0.000213  
# Lock_time: 0.000125 
# Rows_sent: 0  
# Rows_examined: 0
SET timestamp=1602233769;
SELECT * FROM `auto-tool`.`t_project` LIMIT 0;

第一行:用户名 、用户的 IP 信息、线程 ID 号
第二行:执行花费的时间【单位:毫秒】
第三行:执行获得锁的时间
第四行:获得的结果行数
第五行:扫描的数据行数
第六行:这 SQL 执行的具体时间
第七行:具体的 SQL 语句

Mysqldumpslow 分析工具

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

语法:
mysqldumpslow -s r -t 10 slow-mysql.log -s order (c,t,l,r,at,al,ar)
-s 按照那种方式排序
c:访问计数
l:锁定时间
r:返回记录
al:平均锁定时间
ar:平均访问记录数
at:平均查询时间
-t 是top n的意思,返回多少条数据。
-g 可以跟上正则匹配模式,大小写不敏感。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值