设为首页 加入收藏

TOP

MySQL开启慢查询日志
2015-11-10 12:17:00 来源: 作者: 【 】 浏览:0
Tags:MySQL 开启 查询 日志

所谓慢查询即一条sql语句的查询时间超过了预定义好的规定查询时间,这些语句是要记录下来做语句优化使用的,下面是如何记录慢查询语句的方法:


1、先查看是否开启慢查询日志功能:


mysql> show global variables? like 'slow_query_log';


+----------------+-------+


| Variable_name? | Value |


+----------------+-------+


| slow_query_log | OFF? |


+----------------+-------+


1 row in set (0.00 sec)


如果没有开启可以在sql命令界面直接打开:


mysql> set global slow_query_log=1;


Query OK, 0 rows affected (0.00 sec)


mysql> show global variables? like 'slow_query_log';? #开启慢查询日志记录的命令


+----------------+-------+


| Variable_name? | Value |


+----------------+-------+


| slow_query_log | ON? ? |? # slow_query_log的值为on表示已经开启


+----------------+-------+


1 row in set (0.00 sec)


?



2、定义时间SQL查询的超时时间:


查看默认为多少秒:


mysql> show global variables? like 'long_query_time';


+-----------------+-----------+


| Variable_name? | Value? ? |


+-----------------+-----------+


| long_query_time | 10.000000 |? #默认为10秒,时间太长,我设置为2秒


+-----------------+-----------+


1 row in set (0.00 sec)


mysql> set? global long_query_time = 2;


Query OK, 0 rows affected (0.00 sec)


mysql> show global variables? like 'long_query_time';


+-----------------+----------+


| Variable_name? | Value? ? |


+-----------------+----------+


| long_query_time | 2.000000 | #将超时时间设置为2秒


+-----------------+----------+


1 row in set (0.00 sec)


3、查看慢查询日志的保存路径:


mysql> show global variables? like 'slow_query_log_file';


+---------------------+-----------------------------+


| Variable_name? ? ? | Value? ? ? ? ? ? ? ? ? ? ? |


+---------------------+-----------------------------+


| slow_query_log_file | /mydata/data/node9-slow.log |


+---------------------+-----------------------------+


1 row in set (0.01 sec)


4、测试效果:


先模拟执行一条命令睡眠4秒钟:


mysql> select sleep(4);


+----------+


| sleep(4) |


+----------+


|? ? ? ? 0 |


+----------+


1 row in set (4.00 sec)


然后查看这条慢查询日志是否会被记录在慢查询日志当中:


[root@node9 ~]# cat? /mydata/data/node9-slow.log


# Time: 150408? 9:22:41


# User@Host: root[root] @ localhost []? Id:? ? 1


# Query_time: 4.001110? Lock_time: 0.000000 Rows_sent: 1? Rows_examined: 0


SET timestamp=1428456161;


select sleep(4);? #已经被记录到日志当中,生成环境可以记录慢查询语句,适当做SQL查询语句优化,如使用where语句或like语句做精确查询。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL线程缓存thread_cache_size.. 下一篇使用InstantClient访问Oracle数据..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: