• mysql优化笔记


    mysql优化层级

    第一优先级:sql及索引

    第二优先级:数据表结构

    第三优先级:系统配置

    第四优先级:硬件

    第一步:

    确定慢查询语句

    开启慢查询日志

     1  show VARIABLES like 'slow_query_log';
     2  
     3  show VARIABLES like '%log%';
     4  
     5  set global log_queries_not_using_indexes=on;
     6  
     7  show VARIABLES like 'long_query_time'; #慢查询时间分界线
     8  
     9  show VARIABLES like 'slow_query_%'  
    10  
    11  set global slow_query_log=on;

     日志查看工具:pt-query-digest

    第二步:

    如何分析sql查询

    explain返回各列的含义

    table:显示这一行的数据是关于哪张表的

    type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL

    possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。

    key:实际使用的索引。如果为null,则没有使用索引。

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

    ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

    rows:msyql 认为必须检查的用来返回请求数据的行数

    using filesort: 看到这个得时候,查询就需要优化了。mysql需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行指针来排序全部行

    using temporary 看到这个得时候,查询需要优化了。这里mysql需要创建一个临时表来存储结果,这通常发生在对不通的列集进行order by上,而不是Group by上

    优化语句

    count 不统计null值

    SELECT COUNT(release_year='2006' OR NULL) as '2006电影',COUNT(release_year='2007' OR NULL) as '2007电影' from film
  • 相关阅读:
    GET和POST两种基本请求方法的区别
    GET与POST类型接口
    TCP连接与断开详解(socket通信)
    QC02
    QC01
    tcp三次握手和四次挥手
    ssh整合
    redis主从切换
    缓存解释(一级缓存,二级缓存)
    cxf整合spring代码
  • 原文地址:https://www.cnblogs.com/huanhang/p/14444089.html
Copyright © 2020-2023  润新知