• 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% 以下了;这才是正常的情况;至此结束。

  • 相关阅读:
    javaBean实体包区分
    先后天八卦配太极图
    mysql表连接
    关于解决问题方法论的思考
    Python基础综合练习
    大数据概述
    编译原理
    词法分析
    组合数据类型练习
    词法分析器实验报告
  • 原文地址:https://www.cnblogs.com/ailingfei/p/6760459.html
Copyright © 2020-2023  润新知