当前位置:首页 > Mysql教程 > 列表

mysql慢查询配置方法详解

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-04 16:54:48 浏览: 评论:0 

mysql慢查询我们会使用官方的mysqldumpslow命令来分析,下面我来介绍mysql慢查询配置,分析,日志等等具体实现方法详解.

mysql服务器有一项功能,可以检测到哪条sql语句查询得比较慢,就是慢查询slowlog,现在介绍如何开启。

在[mysqld]下面增加如下代码:

  1. long_query_time = 1 
  2. log-slow-queries = /usr/local/mysql/data/slow.log 
  3. log-queries-not-using-indexes --phpfensi.com
  4. long_query_time = 1 #定义超过1秒的查询计数到变量Slow_queries。 
  5. log-slow-queries = /usr/local/mysql/data/slow.log #定义慢查询日志路径。 
  6. log-queries-not-using-indexes #未使用索引的查询也被记录到慢查询日志中(可选)。 

mysql自带了一个查看慢日志的工具mysqldumpslow,执行mysqldumpslow –h可以查看帮助信息.

主要介绍两个参数-s和-t

  1. -s 这个是排序参数,可选的有: 
  2. al: 平均锁定时间 
  3. ar: 平均返回记录数 
  4. at: 平均查询时间 
  5. c: 计数 
  6. l: 锁定时间 
  7. r: 返回记录 
  8. t: 查询时间 
  9. -t n 显示头n条记录。 

MySQL慢查询分析mysqldumpslow

/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log

这会输出记录次数最多的10条SQL语句,其中:

•-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;

•-t, 是top n的意思,即为返回前面多少条的数据;

•-g, 后边可以写一个正则匹配模式,大小写不敏感的;

比如:/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log

得到返回记录集最多的10个查询.

/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log

得到按照时间排序的前10条里面含有左连接的查询语句。

MySQL的慢查询记录/日志

Windows下开启MySQL慢查询

MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上

log-slow-queries = F:MySQLlogmysqlslowquery.log

long_query_time = 2

Linux下启用MySQL慢查询

MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上

log-slow-queries=/data/mysqldata/slowquery.log

long_query_time=2

注意:log-slow-queries = F:MySQLlogmysqlslowquery.log为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;

long_query_time=2中的2表示查询超过两秒才记录;

2009年09月24日更新

在my.cnf或者my.ini中添加log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。比如:

log-slow-queries=/data/mysqldata/slowquery.log

long_query_time=2

log-queries-not-using-indexes

Tags: Mysql慢查询 Mysql开启慢查询

分享到: