MySql的慢查询分析及开启慢查询日志

查看下MySQL默认配置中多少秒才算慢查询

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

如上表显示,系统默认的慢查询时间上限是10秒,下面我们来把它改成1秒(大家也可以根据自己实际情况来定);

1
2
mysql> set long_query_time=1;  注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。
Query OK, 0 rows affected (0.00 sec)

哦了!最后我们来瞅瞅MySQL开启慢查询日志记录没有;

1
2
3
4
5
6
7
8
mysql> show variables like 'slow%';
+---------------------+---------------+
| Variable_name    | Value     |
+---------------------+---------------+
| slow_launch_time  | 2       |
| slow_query_log   | OFF      |
| slow_query_log_file | /tmp/slow.log |
+---------------------+---------------+

ps:

slow_query_log //是否打开日志记录

slow_query_log_file //日志存放位置

MySQL默认没有开启慢查询,下面我们来开启下:

1
2
mysql> set global slow_query_log='ON';
Query OK, 0 rows affected (0.00 sec)

至此大功告成!!!是不是很简单?

注意:

使用set global slow_query_log=on开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)

慢查询日志格式

# Time: 171102 10:50:46
# User@Host: sp2p_web[sp2p_web] @ web02.pj.com [172.16.3.11]
# Query_time: 11.371672  Lock_time: 0.000193 Rows_sent: 8  Rows_examined: 25961606
SET timestamp=1509591046;
SELECT b.id AS borrowId, CONCAT('第 ',f_get_number(b.`borrowTitle`),' 期') AS term, b.borrowStatus AS borrowStatus, b.deadline AS deadline,b.`annualRate`/100 AS borrowRate  FROM t_borrow b WHERE b.exclusiveMark = 5 AND b.borrowStatus IN (2,3,4,5) AND  IFNULL((SELECT MAX(interest) FROM t_floating_rate_allocate WHERE borrowId = b.id),0)<=0.15 order by b.`borrowStatus` ASC, b.id DESC limit 0, 8;

  

 

posted @ 2017-11-02 11:30  Gringer  阅读(106)  评论(0)    收藏  举报