标签:log sql 抓取 var mysql slowquery where
优化思路:抓取(范围) 》定位(缩小范围) 》分析并给出建议
1、抓取,首先开启mysql慢查询
mysql服务器中找到my.Conf的配置文件,slow_query_log=1表示将大于1秒的sql语句抓取出来,slow_query_log_file=/var/log/mysql/slowquery_jumei.log表示将日志输出到/var/log/mysql/slowquery_jumei.log
注意:配置文件改动后重启服务(service XXX restart)/重启机器(reboot)
重启成功后使用mysql客户端验证慢查询是否开启成功,如下图:
2、缩小范围,使用mysqldumpslow分析慢查询抓取到的日志文件
① mysqldumpslow -s c -t 5 /var/log/mysql/slowquery.log可以看出访问次数最多的5个sql语句
② mysqldumpslow -s r -t 5 /var/log/mysql/slowquery.log可以看出返回记录集最多的5个sql
③ mysqldumpslow -t 5 -s t -g “ left join” /var/log/mysql/slowquery.log按时间返回前5条里面含有左连接的sql语句
3、抓到sql语句后使用explain优化sql
用法:explain后跟要优化的sql语句
4、重点关注点:
① type 表示mysql在表中找到所需行的方式,又称“访问类型”,常见类型如下:从左至右,有最差到最好:
All index range ref eq_ref const system null
② Key显示mysql在查询中实际使用的索引,若没有使用索引,显示为null
③ Rows 表示mysql根据表统计信息以及索引选用情况,估算找到所需记录需要读取的行数(越小越好)
④ Extra
如果是only index 这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
如果是where used ,就是使用上了where限制。
如果是impossible where 表示用不着where,一般就是没查出来啥。
如果此信息显示Using filesort 或者Using temporary的话会很吃力,where和order by的索引经常无法兼顾,如果按照where来确定索引,那么在order by时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算
标签:log,sql,抓取,var,mysql,slowquery,where 来源: https://www.cnblogs.com/soft-engineer/p/15322733.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。