mysql深入四-慢查询

一.查看是否开启慢查询日志
show variables like '%slow%';
+---------------------------+--------------------------------------------------+
| Variable_name             | Value                                            |
+---------------------------+--------------------------------------------------+
| log_slow_admin_statements | OFF                                              |
| log_slow_slave_statements | OFF                                              |
| slow_launch_time          | 2                                                |
| slow_query_log            | ON                                               |
| slow_query_log_file       | /usr/local/mysql/data/zhaodeMacBook-Pro-slow.log |
+---------------------------+--------------------------------------------------

其中slow_query_log代表记录慢查询到日志的开关。
slow_launch_time代表大于等于多少秒该查询会被记录到慢查询日志。
slow_query_log_file 是慢查询日志的文件。

未开启时在my.cnf文件中定义:
slow_query_log=1
开启慢查询日志

二.测试是否能够查询到慢查询
执行select sleep(10);
然后有2种方法查看慢查询,一种是show processlist,一种是到慢查询日志去查看。
show processlist可以显示相应的当前正在运行的慢查询,显示如下:
+----+------+-----------+------+---------+------+------------+------------------+
| Id | User | Host      | db   | Command | Time | State      | Info             |
+----+------+-----------+------+---------+------+------------+------------------+
|  7 | root | localhost | NULL | Query   |    0 | starting   | show processlist |
| 66 | root | localhost | NULL | Query   |    4 | User sleep | select sleep(10) |
+----+------+-----------+------+---------+------+------------+-----

可以看到id为66的进程,执行了4秒的查询:select sleep(10);
可以用 kill 66 命令结束这个查询。

从日志中查看,则需要查看:slow_query_log_file 对应文件,这里是:/usr/local/mysql/data/zhaodeMacBook-Pro-slow.log
日志显示:
# Time: 2017-09-09T05:08:15.599994Z
# User@Host: root[root] @ localhost []  Id:    66
# Query_time: 10.001136  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1504933695;
select sleep(10);

猜你喜欢

转载自blog.csdn.net/zhaozhenzuo/article/details/77914544