您的位置:首页 > 数据库 > MySQL

mysql开启慢查询日志

2015-12-25 11:30 417 查看
MYSQL慢查询配置

1. 慢查询有什么用?

它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.

2. 如何开启慢查询?

首先我们先查看MYSQL服务器的慢查询状态是否开启.执行如下命令:

show variables like '%quer%';

我们可以看到当前log_slow_queries状态为OFF, 说明当前并没有开启慢查询.

开启慢查询非常简单, 操作如下:

在[mysqld]中添加如下信息:

[mysqld]

log-slow-queries="mysql-slow.log"

long_query_time = 4

log-queries-not-using-indexes

log-slow-queries: 代表MYSQL慢查询的日志存储目录, 此目录文件一定要有写权限;

Windows下需要写绝对路径,如:log-slow-queries="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-slow.log"

long_query_time: 最长执行时间. (如图, MSYQL将记录下所有执行时间超过2条的SQL语句, 此处为测试时间, 时间不应太小最好在5-10秒之内, 当然可以根据自己的标准而定);

log-queries-not-using-indexes    :没有使用到索引的查询也将被记录在日志中

配置好以后重新启动一个MYSQL服务

转自:http://blog.csdn.net/ljasdf123/article/details/9713523

方法一:修改mysql的my.cnf文件

Linux:

在mysql配置文件/etc/my.cnf中[mysqld]选项下增加:

vi /etc/my.cnf

log-slow-queries=/usr/local/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=1 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)

Windows:

在my.ini的[mysqld]添加如下语句:
log-slow-queries = D:\www\mysql\log\mysqlslowquery.log
long_query_time = 1(其他参数如上)

保存后重启mysql即可加载配置

注意
llog-slow-queries=/usr/local/mysql/slowquery.log 为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=1中的1表示查询超过两秒才记录;

方法二:命令方式

cd /usr/local/mysql/bin

mysql -u root -p

enter password

 

mysql> show variables like ”%long%”;         //查看一下默认为慢查询的时间10秒

+—————–+———–+

| Variable_name   | Value     |

+—————–+———–+

| long_query_time | 10.000000 |

+—————–+———–+

1 row in set (0.00 sec)

 

mysql> set global long_query_time=2;          //设置成2秒,加上global,下次进mysql已然生效

Query OK, 0 rows affected (0.00 sec)

 

mysql> show variables like ”%slow%”;          //查看一下慢查询是不是已经开启

+———————+———————————+

| Variable_name       | Value                           |

+———————+———————————+

| log_slow_queries    | OFF                             |

| slow_launch_time    | 2                               |

| slow_query_log      | OFF                             |

| slow_query_log_file | /usr/local/mysql/mysql-slow.log |

+———————+———————————+

4 rows in set (0.00 sec)

 

mysql> set slow_query_log=’ON’;                        //加上global,不然会报错的。

ERROR 1229 (HY000): Variable ’slow_query_log’ is a GLOBAL variable and should be set with SET GLOBAL

mysql> set global slow_query_log=’ON’;            //启用慢查询

Query OK, 0 rows affected (0.28 sec)

 

mysql> show variables like ”%slow%”;              //查看是否已经开启

+———————+———————————+

| Variable_name       | Value                           |

+———————+———————————+

| log_slow_queries    | ON                              |

| slow_launch_time    | 2                               |

| slow_query_log      | ON                              |

| slow_query_log_file | /usr/local/mysql/mysql-slow.log |

+———————+———————————+

4 rows in set (0.00 sec)

转自:http://www.cnblogs.com/zhangjing0502/archive/2012/07/30/2615570.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: