mysql慢查询

一、造成慢查询的核心原因:数据量大
解决:减少数据访问量(优先满足业务需求)

二、原因分析解决:

1、请求了不需要的数据?
        查询了不需要的记录(比如没加where条件过滤,limit  10000,10)
        取出全部的列(select * 当select *时,如果有某些字段没有加覆盖索引,则会在二级索引查不到字段的时候进行回表操作(回表增加磁盘IO,不满足第三颗星))
        重复查出相同的数据(比如一些部门、角色,可以做缓存替代mysql)
    

2、衡量一个sql查询好坏的标准:
        响应时间: 服务时间(sql处理时间) + 排队时间(等锁,等IO)

3、慢查询日志配置
    (1)mysql记录了所有执行时间超过long_query_time这个参数设定的时间戳阈值的SQL语句;
    (2)慢查询日志开关及配置:
    

SHOW VARIABLES LIKE '%long_query_time%';    ---- 默认是OFF;
SHOW VARIABLES LIKE '%long_query_time%';     --- 10 秒
SHOW VARIABLES LIKE '%slow_query_log_file%'; --- 慢查询日志文件(linux下的路径是完整路径)

4、有时除了慢查询,有些没有使用到任何索引的sql也可以将其记录到慢查询日志,开启下列配置即可记录:
    

SHOW VARIABLES LIKE '%log_queries_not_using_index%';
    
log_queries_not_using_indexes    OFF

5、慢查询日志分析:

从Time开始:

到另一个time开始前都是慢查询日志;

例如:

time是执行时间

user是用户

query_time:是花费时间,=sql时间,等待时间,扫描的行,结果行

使用命令进行慢查询统计:

mysqldumpslow  -S -c  -t,l,r)   slow_log;

表示导出慢查询日志,其中,

-s表示排序sort

c表示count

t表示时间time

l表示锁lock

r表示result结果

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值