注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

MySQL开启慢查询日志以分析SQL性能的方法  

2017-03-10 15:12:05|  分类: Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
MySQL慢查询日志对于跟踪性能有问题的SQL查询非常有用,可以分析出当前程序里有那些很耗费资源的SQL语句,也可以找出那些SQL并没有利用索引,在得到如上的信息后,就可以有针对地进行调优。那么以上说了这么多,可能用些朋友就急了,到底要如何开启MySQL的慢查询日志记录呢?当然方法其实也很简单,在配置文件里[mysqld]段后加上如下代码重启下就好:

#设置把日志文件路径,可为空,系统默认用主机名,并被附加slow.log

log-slow-queries=/var/lib/mysql/slowquery.log
#表示查询超过两秒才记录.

long_query_time=2

如果还需要纪录下没有使用索引的查询,那么还需要加入如下:

#没有使用索引的查询也将被记录

log-long-format

#没有使用索引的query

log-queries-not-using-indexes

开启慢日志功能,对于性能的影响不大(当然还是肯定会有点),但是可以据此分析那些最需要注意的查询(没有使用索引或性能有问题)。这个日志文件有时非常巨大,并不方便直接察看,使用MySQL自带的一个命令mysqldumpslow查看会更好,这个命令的参数也不复杂。

-s ORDER #这里的Order可以选(c,ac,t, at, l, al, r, ar), 分别代表次数,时间,lock的时间和返回的记录数来排序,

前面加了a的时倒序,'at’是默认。

-t NUM #表示要返回多少条记录
-g PATTERN #这里可以使用正则来过滤

简单例子如下【这里假设日志文件为593668.com-slow.log】:

#查询次数最多的20个
mysqldumpslow -s c -t 20 593668.com-slow.log
#查询次数最少的20个
mysqldumpslow -s ac -t 20 593668.com-slow.log
#查询返回记录最多的10个
mysqldumpslow -s r -t 10 593668.com-slow.log
#按照时间返回前10条里面含有左连接的sql语句。
mysqldumpslow -t 10 -s t -g “left join” 593668.com-slow.log

另外,如果觉得记录到日志文件中不好,其实还可以调整成log_output参数,将其设置成Table,这样MySQL会将相关日志记录到Mysql库中的slow_log表中。如果两者都需要,那么就设置成:

log_output=Table,File

表中的记录如下图所示:
MySQL开启慢查询日志以分析SQL性能的方法 - sinsunson - 天朝布衣田中码农参上
有些这些表记录,就可以直接查询,比日志文件查询要更简单方便。
这里要提醒下,一定要记得MySQL版本在 5.1 以上才可以同时支持两种日志的。对了,如果不想永久生效,也可以使用set global临时生效,相关的使用方法可以参考《MySQL数据导入报“MySQL服务器已离线错误”的解决办法》。


  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017