linux下配置慢查询:
修改my.cnf文件,在[mysqld]模块下添加
#slow_query_log=1 有些人说这个是slow_query的开关,但是我加上以后提示错误。
log_slow_queries=/data/slowquery.log long_query_time=1
重启mysql。
测试慢查询,可以在用mysql连接mysql,运行:
select sleep(2);
查看 /data/slowquery.log ,有类似如下结果:
# Time: 121120 20:06:23 # User@Host: root[root] @ localhost [127.0.0.1] # Query_time: 2.104120 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1353413183; select sleep(2);
说明成功了。
/**************************/
注意在long_query_time配置的时候,如果不是整数会提示错误。
如果确实需要配置非整数,可以在mysql控制台执行:
set global long_query_time=0.1
要重启mysql才会生效。【本人测试失败】
ERROR 1232 (42000): Incorrect argument type to variable 'long_query_time'。如果设置为1可以成功。
配置完以后,要查看配置状态:
查看MySQL服务器配置信息 :show variables ;
显示一个两个参数,一个是slow_launch_time,一个是long_query_time。slow_launch_time跟慢查询日志没有任何关系, 它代表的是thread create的一个阈值。
查看MySQL服务器运行的各种状态值 : show global status;
可以用 show variables like '%slow%';过滤你感兴趣的值。
总结一下:
- 配置的时候,无法配置成小于1s的查询为慢查询。
- 不要把slow_launch_time和long_query_time混淆。
再附一个链接:http://lxneng.iteye.com/blog/451985 里面对过滤说的很详细。但是混淆了两个配置项。