zoukankan      html  css  js  c++  java
  • mysql慢查询解析-linux命令

    使用mysqldumpslow 命令可以解析mysql慢查询日志,mysqldumpslow的参数如下:
    -s ,是按照任何方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数
    来排序,ac/at/al/ar   表示相应的倒叙
    -t,是top n的意思,即为返回前面多少条 的数据
    -g,后面可以写一个正则匹配模式,大小写不敏感
    
    例如  
    1、sql执行时间最长的前20调sql
    mysqldumpslow -s  t -t 20 -g 'select' /opt/data/slowquery_2016050921.log
    2、得到按照时间排序的前10条里面含有含有左链接的查询语句
    mysqldumpalow -s t -t 10-g 'left join' /opt/data/slowquery_2016050921.log
    
    1、explain、desc,(mysql命令)查看sql执行效率,帮我们分析select语句
    explain:该命令是查看查询优化器如何决定查询的主要方法,这个功能有局限性,只是
    一个近似结果,有时他是一个很好的近似,有时可能相差甚远。但它的输出可以获取
    最准确的信息。
    
    eg1:
    explain select *from students where id in (2,3);
    
    explain中的列:
    id:只是一个编号,id越大优先级越高
    
    select type:有以下几种值
    simple :最简单的select,没有union和子查询
    primary:最外面的select,在有子查询的语句最外面的select就是primary
    derived: 表示包含from子句中的select,mysql递归执行并将结果放到一个临时
    表中,服务器内部称其为派生表,
    
    type列:是指mysql的访问类型,也就是查找表中的行
    下面是最重要的访问方法,依次从最差到最优
    all<index<range<ref<eq_ref<const,system<null
    all:扫描整张表
    index:只有索引树被扫描跟all一样是读全表不过是从索引中取
    range;范围扫描,是一个有限制的索引扫描
    ref;非唯一值索引扫描,返回匹配某一直的所有行
    Eq_ref:最多只返回一条符合条件的记录
    const/system:将某些 访问转化成一个常量;
    null:能在优化阶段分解查询语句
    key_len:索引使用的字节数
    key:有没有使用索引
    ref:显示索引的那一列被使用了
    rows:表示查询数据的请求行数
    Extra:
    •这一列包含的是不适合在其他列显示的额外信息。
    •一些比较重要的如下:
    using index”此值表示MySQL将使用覆盖索引,以避免访问表。
    using where”  表示查询使用了where条件
    using temporary” 这意味着MySQL在对查询结果排序时会使用一个临时表。
    using filesort这意味着MySQL会对结果使用一个外部的索引排序,而不是按索引顺序从表里读取行。
    局限性:
    1、explain不会考虑触发器、存储过程或者函数对查询的影响
    2、explain不会考虑缓存对查询结果的影响
    3、不会考虑mysql执行查询所有的特定优化
    4、是基于统计信息的估算,并不是精确值
    5、mysql 5.6之前只支持  select  explain
    
    MySQL profile-分析SQL执行带来的开销
    在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。
    •开启 profile:
    •set @@profiling=1;
    •查看profile是否开启
    •select @@profiling;
    •1为开启,0为关闭
    •开启profile后,执行的sql都会被profile记录
    •show profiles;可以看到当前已经被记录的sql
    •show profile for query n;#n为show profile中的query_id
    •show profile cpu ,block io for query 1;查看sql执行的时间、cpu和io
  • 相关阅读:
    PHP全部手册
    你必须收藏的GitHub技巧
    PV和并发
    api接口
    LeetCode 14. 最长公共前缀
    LeetCode 1037. 有效的回旋镖
    LeetCode 242. 有效的字母异位词
    LeetCode 151. 翻转字符串里的单词
    LeetCode 22. 括号生成
    LeetCode 面试题05. 替换空格
  • 原文地址:https://www.cnblogs.com/lingxia/p/6293047.html
Copyright © 2011-2022 走看看