Mysql慢查询配置

来源:互联网 发布:广州高速公路收费软件 编辑:程序博客网 时间:2024/05/21 06:53

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


如何开启慢查询?

首先我们先查看MYSQL服务器的慢查询状态是否开启.

执行如下命令:

mysql> show variables like 'slow%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_launch_time    | 2                                 |
| slow_query_log      | OFF                               |
| slow_query_log_file | /data/mysql/data/ser6-51-slow.log |

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

需要两个步骤开启:

一:在线修改

#修改slow_query_log

mysql> set global slow_query_log=ON
    -> ;
Query OK, 0 rows affected (0.05 sec)


mysql> show variables like 'slow%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_launch_time    | 2                                 |
| slow_query_log      | ON                                |
| slow_query_log_file | /data/mysql/data/ser6-51-slow.log |
+---------------------+-----------------------------------+
3 rows in set (0.00 sec)


#修改long_query_time

默认该参数是10秒:

mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)


假如我想记录执行时间超过3秒的sql语句:

mysql> set global long_query_time = 3
    -> ;
Query OK, 0 rows affected (0.00 sec)


当前会话看不到long_query_time修改后的变化,需要新打开一个会话,进行查询。

mysql> show variables like 'long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

二:修改my.cnf

在线修改的方式在重启数据库服务后会失效,所以还需要修改配置文件:

在[mysqld]下添加:

slow_query_log_file=/data/mysql/data/ser6-51-slow.log

slow_query_log=ON

long_query_time = 3


三:验证是否配置成功

#查看慢查询日志文件是否生成

[root@ser6-51 ~]# ls -l /data/mysql/data/ser6-51-slow.log
-rw-rw---- 1 mysql mysql 570 Jun 26 10:08 /data/mysql/data/ser6-51-slow.log


#查看long_query_time是否生效

mysql> select sleep(4);
+----------+
| sleep(4) |
+----------+
|        0 |
+----------+
1 row in set (4.00 sec)


[root@ser6-51 ~]# vi /data/mysql/data/ser6-51-slow.log

# Time: 150626 10:31:18
# User@Host: root[root] @ localhost []  Id:    26
# Query_time: 4.000214  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1435285878;
select sleep(4);


--慢查询日志记录了这个耗时4秒的操作,所以配置成功。


0 0
原创粉丝点击