zoukankan      html  css  js  c++  java
  • MySql 数据库性能优化+Explain性能分析

    前言:  

      Mysql 性能优化知识,不是一篇文章就能说明白的,今天,咱们就简单的来通过一些命令,先来了解数据库的一些属性及知道如何下手进行一些性能方面的调优

    正文:

      MySql 中,数据库分析工程师最常用的一个指令 “SHOW STATUE”,使用此命令,可以查看数据库的一些性能及运行情况等。那么他的后面可以跟一些什么参数来具体查询信息呢

    常用命令
    Connections 连接mysql服务器的次数
    Uptime mysql服务器的上线时间(uptime的单位为妙
    Slow_queries 慢查询的次数
    Com_select  查询操作的次数
    Com_insert  插入操作的次数
    Com_update  更新操作的次数
    Com_delete  删除操作的次数

    下面是命令的使用方法:

    命令:
    SHOW STATUS LIKE 'CONNECTIONS'
    
    命令:
    SHOW STATUS LIKE 'Uptime'
    
    命令:
    SHOW STATUS LIKE 'Slow_queries'
    
    命令:
    SHOW STATUS LIKE 'Com_select'
    
    命令:
    SHOW STATUS LIKE 'Com_insert'
    
    命令:
    SHOW STATUS LIKE 'Com_update'
    
    命令:
    SHOW STATUS LIKE 'Com_delete'
    

       

    Explain 命令,也是常用的分析查询语句性能的一个利器,他能分析出Mysql内部解析器语句的运行状况

    使用方法:
    Explain + SQL 语句
    例如:
    Explain select * form user where ...

    执行结果如图:

    字段解释:
      1、Id字段,字段代表的是在mysql内部加载的顺序,遵循如下几个规则:
         Id相同的,从上往下顺序执行,Id不同的,较大的先执行  

      2、select_type如下:

    SIMPLE  表示简单查询,其中不包括连接查询和子查询
    PRIMARY  表示主查询,或者是最外层的查询语句
    UNION  表示连接查询的第2个或者后面的查询语句
    DEPENDENT UNION  连接查询中的第2个或者后面的select语句
    UNION RESULT  连接查询的结果
    SUBQUERY 子查询的第1个select语句
    DEPENDENT SUBQUERY 子查询的第1个select,取决于外面的查询
    DERIVED 在FROM列表中包含子查询被标记为DERIVED


      3、table 查询的关于哪张表的表名,如有使用别名,就显示的别名的名字
      4、type,表示访问类型

    system  只有一条记录,最理想情况,基本不可能出现
    const  扫描了索引,一次九完成的
    qe_ref  唯一性的索引扫描
    ref  非唯一性的索引扫描,返回匹配的多行
    ref_or_null  该连接类型如果ref,但是如果添加了mysql可以专门搜索包含null值的行,在解决子查询中经常使用该连接类型的优化
    index_merge  该连接类型表示使用了索引合并优化方法
    unique_subquery  该类型替换了下面形式的in子查询的ref。是一个索引查询函数,可以完全替代子查询,效率更高
    index_subquery  该连接类型类似于unique_subquery,可以替换in子查询,但是只适合下列形式的子查询中非唯一索引
    range  使用了between and之类的语句,缩小了范围
    index  遍历了索引树
    all  对于前面的表的任意行组合,进行完整的表扫描


      5、possible_key 和 key
         possible_key 是代表mysql分析后认为可能会用到的索引,这个不关键,关键的是key这个字段,它代表了实际所用到的索引
      6、ref 表示那些值被用于索引列的查找
      7、rows 总共查询多少行
      8、extra 额外信息,比较重要的一些信息
        1.using filesort 出现这个说明mysql引用自己的排序,也就是没有按照索引来
        2.using temprary 出现这个说明mysql先创建了一张临时表,然后再在这个临时表里操作,再删除这个表,性能较差
        3.using index 使用了索引,性能不错


    结束:

      通过数据库调优及性能分析之后,愿程序员写出来的代码越来越高性能。

  • 相关阅读:
    /etc/init.d/functions: No such file or directory报错问题
    在Linux上安装Python3.7.1
    python 使用openpyxl实现读写xlsx文件
    Git 撤销本地修改
    element的el-table表格自定义表头,slot="header"内,数据不更新的问题
    记录下本地修改文件名称大小写问题线上说找不到文件
    解决国内访问github慢的问题笔记
    vue项目中使用echarts实现疫情地图
    uni-app项目搭建
    uniapp引入uni-ui组件报错TypeError: this.getOptions is not a function
  • 原文地址:https://www.cnblogs.com/yuyoho/p/13198218.html
Copyright © 2011-2022 走看看