mysql开启查看慢查询日志

SET GLOBAL  slow_query_log = 1

 

#slowlog config

slow_query_log = 1

long_query_time = 2

log_output = FILE

slow_query_log_file = /data1/mysqldata/mysql5.1.57/logs/slowlog.log

 

#error logs

log-error = /data1/mysqldata/mysql5.1.57/logs/error.log

 

 

 

 

 

 

 

 

在mysql5.1之前的版本中,只需要

log-slow-queries=/var/log/mysqld/log-slow-queries.log
复制代码



就可以开启Slow Query log(慢查询日志)了。
但这样在mysql 5.1中并不管用。

日志中会有如下的错误:
[Warning] '--log_slow_queries' is deprecated and will be removed in a future release. Please use ''--slow_query_log'/'--slow_query_log_file'' instead.

修改如下:
log_output=FILE # also can be FILE,TABLE or TABLE or NONE
slow-query-log=1
slow_query_log_file=/var/log/mysqld/log-slow-queries.log
复制代码

 

1,配置开启
在mysql配置文件my.cnf中增加

log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=2 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)


#打开慢查询
slow_query_log  
#存在哪里 
slow_query_log_file=/home/mysql/data3306/log-slow.log
#多长时间算慢查询
long_query_time = 1

2,查看方式
使用mysql自带命令mysqldumpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
eg:
s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的
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,C++,c,mysql,C#)