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;

浙公网安备 33010602011771号