【MySQL】慢查询配置与分析

来源:互联网 发布:手机还原软件 编辑:程序博客网 时间:2024/05/19 11:50

前言

配置过几次mysql的慢查询分析,但都没记住,每次都要上网找配置参数,所以这次干脆记录下来。慢查询就是通过配置,记录查询效率低的sql语句,可以统计使用次数、未用到索引的语句等功能。实现项目中数据层的优化,这里使用mysql官方自带的分析工具mysqldumpslow,常见的还有如下:

慢查询分析工具

  1. mysqldumpslow
  2. mysqlsla
  3. myprofi
  4. mysql-explain-slow-log
  5. mysqllogfilter

配置

  • 查看mysql是否开启过慢查询
show variables like '%slow%';

如果slow_query_log 为ON或者为1,则表示开启,反之未开启。在mysql的配置文件my.cnf(windows下应该是my.ini)中配置慢查询项。顺便说一下查看mysql配置文件路径,命令如下:

zemochen:choicecollect SuperZemo$ mysqld --verbose --help |grep -A 1 'Default options'Default options are read from the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 

如上,就是查询mysql配置文件路基,及输出结果,优先级按位置顺序依次往下。
- 修改配置文件my.cnf,在[mysqld]中增加如下:

slow_query_log=ON     #开启慢查询long_query_time = 1   #慢查询语句时间(时间超过1秒记录)slow_query_log_file=/data/mysql/slow_query.log#慢查询日志文件路径log_queries_not_using_indexes = true    #是否调用索引

重启mysql即可,再进入mysql中查看配置是否生效,可以使用:

select sleep(1);

然后去查看/data/mysql/slow_query.log 是否有记录刚才的测试语句,确认配置成功。

mysqldumpslow工具分析慢查询日志

mysqldumpslow [options] [log_file ...]#mysqldumpslow -s r -t 10 /data/mysql/slow_query.log 

查询参数说明:

格式(参数) 描述 -a 不抽象为N和S(因为是多条语句合并,所以会把参数和时间抽象成N和S) -n N 指定抽象数字至少为N位 -g pattern 只查询指定匹配的语句 -h 查询指定host的语句 -i 服务器示例名 -l 不在总时间中减去锁表时间 -r 反向排序 -s 排序:
t,at: 查询时间或平均时间
l,al:锁定时间或平均锁定时间
r,ar:返回记录时间或平均返回时间
c: 使用次数 -t N 查询前N条记录 –debug,-d debug模式启动 –help,-h 帮助 –verbose,-v 更多信息

查询结果参数说明:

参数 描述 Count 出现次数 Time 执行最长时间; Lock 等待锁的时间 Rows 发送给客户端的行总数

有些数据后面跟了一个() 则表示累计总数

参考文献

http://dev.mysql.com/doc/en/option-files.html
http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html
http://dev.mysql.com/doc/refman/5.7/en/mysqldumpslow.html#option_mysqldumpslow_abstract

关于我

  • @Author:Zemo
  • @Email:zemochen#gmail.com
  • J2EE 两年多研发经验,日常公司打杂,处于迷茫期
  • 欢迎转载,让更多的人学到东西
0 0
原创粉丝点击