zoukankan      html  css  js  c++  java
  • mysql explain 正常,但是实际上是全盘扫描

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

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

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

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

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

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

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

  • 相关阅读:
    函数声明例子
    税收工资分级
    attribute函数
    输出结果有误
    scanf_s()函数与数组,运行环境VS2013
    格式化输出
    功能点介绍和用户场景
    第二次作业合作版
    word count
    第一次作业
  • 原文地址:https://www.cnblogs.com/ailingfei/p/6760459.html
Copyright © 2011-2022 走看看