• mysql性能分析-------profiling和explain


    1. profiling之性能分析

    
    MySQL5.0.37版本以上支持了Profiling – 官方手册。此工具可用来查询 SQL 会执行多少时间,System lock和Table lock 花多少时间等等,对定位一条语句的 I/O消耗和CPU消耗 非常重要。
    查看profiling;
      select @@profiling; 启动profiling
    : set @@profiling=1 关闭profiling : set @@profiling=0;
      sql语句; 1.查看profile记录
    show profiles;

    Duration:我需要时间;

    query:执行的sql语句;

    2.查看详情:

    show profile for query 2;

     

    3.查看cup和io情况

    show profile cpu,block io for query 2;

     

     2.explain 分析

    1.id:一组数字,操作顺序,如果id相同,则执行顺序由上至下,如果是子查询,id的序号递增,值越大优先级越高,越先被执行;

    2.select_type:表示每个字句的类型,简单还是复杂,取值如下;

      a>simple :简单查询,无子查询或union等;

      b>primary:查询中若包含复杂的子部分,最外层则被标记为primary;

      c>subquery:在select或where中若包含子查询,则该子查询被标记为subquery;

      d>derived:from中包含子查询,被标记为derived;

      e>union:若select出现在union之后,则被标记为union;

      f>union result:从union表中获取结果的select将被标记为union result;

    3.table 查询的数据库表名称

    4.type 联合查询使用的类型

      all :全表扫描

      index:全表扫描,只是扫描表的时候按照索引次序 进行而不是行。主要优点就是避免了排序, 但是开销仍然非常大。

      range:索引范围扫描

      ref:非唯一性索引扫描,交返回匹配单独值的所有行,常见于使用非唯一性索引或唯一性索引的非唯一前缀进行的查找。

      eq_ref:唯一性索引扫描

      const、system:当mysql对查询的某部分进行优化,并转换为一个常量时。如将主键置于where列表中,mysql就能将该查询转换为一个常量。system是const的特例,当查询的表只有一行的情况下,即可使用system。

    5. possible_keys: 指出mysql能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出。如果为空,说明没有可用的索引

    6.key:使用到了哪个索引,这里列出的是实际使用到的索引,若没有使用索引,则显示为null。

    7.key_len:使用的索引的长度。在不损失精确性的情况 下,长度越短越好。

    8.ref:显示索引的哪一列被使用了

    9.rows:MYSQL 认为必须检查的用来返回请求数据的行数.找到所需记录,需要读取的行数,越少越好

    10.Extra:不适合在其他列显示,但却十分重要的信息,常见的有如下值:
      a) Using index:使用了索引检索。
      b) where used:使用了where限制,但是用索引还不够。
      c) Using temporary:需要使用临时表来存储结果集,常见于排序和分组查询。性能差。
      d) Using filesoft:使用了文件排序,性能差。

    参考资料:http://www.cnblogs.com/sybblogs/p/7999353.html

         http://blog.csdn.net/asia_kobe/article/details/78683482

  • 相关阅读:
    【LeetCode】70. 爬楼梯
    C++Socket编程—socket网络模型之IOCP
    leetcode_买卖股票_dp状态机
    leetcode_买卖股票_暴力递归
    tensorflow正则化
    程序员掌握这些面试技巧,成功上岸!
    阶段二Linux 高级编程:Linux基础命令三019
    阶段二Linux 高级编程:Linux基础命令二018
    阶段二Linux 高级编程:Linux基础命令一017
    阶段一Python核心编程:面向对象版学员管理系统016
  • 原文地址:https://www.cnblogs.com/myvic/p/8006657.html
Copyright © 2020-2023  润新知