mysql 全盘扫描_mysql explain 正常,但是实际上是全盘扫描

问题描述,由于最近快要到考试季节了,用户活跃量大幅度增加,虽然已升级rds数据库的配置;但是发现了另一个问题,iops大约在3%左右,而cpu缺在 30%以上;虽然都处于运行良好的状态;但是这个参数告诉我数据库服务器运行的不正常;

于是发起sql诊断;查看是否有慢sql如图所示:

e903fa1ec1629b6d1470aadfca4be5b4.png

这里面有一条语句,从数据上分析肯定是全盘扫描 没有用到索引 ,可是明明有索引 为什么没有用到索引呢

下面我们使用 explain 来查看一下,发现mysql预估的查询量 大约在2000左右,这个数据量对于一个数据库来说简直就是毫秒级别的查询;不可能造成全盘扫描查询的;

8ffe86ab6727bbe14bb277f7d6a4d674.png

就在这一点,我忽略了mysql的一个重要的信息;mysql预估和实际查询还是有区别的;mysql 并没有使用我新建的 联合索引,而是使用的 主键查询,我的where条件里面没有使用主键;

既然问题已找到,那么接下来优化一下sql即可 这里使用一个重要的强制索引 force INDEX;如图所示:key,ref都已使用索引

d9861683136c5624a2e309286f5f7c2d.png

总结:优化sql之后,刷新 sql服务器 会发现 ,cpu已经降到 5% 以下了;这才是正常的情况;至此结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值