MySQL开启慢查询日志slow_query_log

来源:互联网 发布:淘宝同款插件 编辑:程序博客网 时间:2024/06/16 19:00
开启慢查询功能 

slow_query_log_file 慢查询日志文件路径 
slow_query_log 用于指定是否打开慢查询日志 
long_query_time 超过多少秒的查询就写入日志 
log_output=file必须指定file或者是table如果是table则慢查询信息会保存到mysql库下的slow_log表中。这点要清楚。默认值是NONE 
打开my.cnf配置文件,加入以下代码: 
log_output=fileslow_query_log=on ;slow_query_log_file = /tmp/mysql-slow.loglong_query_time = 2

保存退出,重启MySQL即可。 

long_query_time = 1 #定义超过1秒的查询计数到变量Slow_queries。 
slow_query_log_file  = /usr/local/mysql/data/slow.log #定义慢查询日志路径。 
log_queries_not_using_indexes #未使用索引的查询也被记录到慢查询日志中(可选)。尽量少使用。 
mysql自带了一个查看慢日志的工具mysqldumpslow。 

执行mysqldumpslow --h可以查看帮助信息。 

主要介绍两个参数-s和-t 
-s 这个是排序参数,可选的有: 
al: 平均锁定时间 
ar: 平均返回记录数 
at: 平均查询时间 
c: 计数 
l: 锁定时间 
r: 返回记录 
t: 查询时间 
-t n 显示头n条记录。 
实例: 
mysqldumpslow -s c -t 20 host-slow.log 
mysqldumpslow -s r -t 20 host-slow.log
 
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。 
mysqldumpslow -t 10 -s t -g “left join” host-slow.log 
这个是按照时间返回前10条里面含有左连接的sql语句。 

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。



1、快速办法,运行sql语句show VARIABLES like "%slow%" 

2、直接去my.conf中查看。

my.conf中的配置(放在[mysqld]下的下方加入)

[mysqld]

log-slow-queries = /usr/local/mysql/var/slowquery.log
long_query_time = 1  #单位是秒
log-queries-not-using-indexes


使用sql语句来修改:不能按照my.conf中的项来修改的。修改通过"show VARIABLES like "%slow%" "
语句列出来的变量,运行如下sql:

set global log_slow_queries = ON;
set global slow_query_log = ON;
set global long_query_time=0.1; #设置大于0.1s的sql语句记录下来




慢查询日志文件的信息格式:

# Time: 130905 14:15:59         时间是2013年9月5日 14:15:59(前面部分容易看错哦,乍看以为是时间戳)
# User@Host: root[root] @  [183.239.28.174]  请求mysql服务器的客户端ip
# Query_time: 0.735883  Lock_time: 0.000078 Rows_sent: 262  Rows_examined: 262 这里表示执行用时多少秒,0.735883秒,1秒等于1000毫秒

SET timestamp=1378361759;  这目前我还不知道干嘛用的
show tables from `test_db`; 这个就是关键信息,指明了当时执行的是这条语句



原创粉丝点击