开启慢查询日志
mysql set global slow_query_log=1;
定义时间SQL查询的超时时间
查看慢查询日志的保存路径
mysql show global variables like 'slow_query_log_file';
查看慢查询
cat /var/log/mysql/slow.log
①.,配置开启
Linux:
在mysql配置文件my.cnf中增加
Windows:
使用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
s,是order的顺序,说明写的不够详细,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -t 10 -s t -g "left join" host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句.
在my.ini中加上下面两句话
log-slow-queries = D:\wamp\mysql_slow_query.log
第一句使用来定义慢查询日志的路径(因为是windows,所以不牵涉权限问题)
第二步:查看关于慢查询的状态
执行如下SQL语句来查看mysql慢查询的状态
show variables like '%slow%';
执行结果会把是否开启慢查询、慢查询的秒数、慢查询日志等信息打印在屏幕上.
第三步:执行一次慢查询操作
SELECT SLEEP(10);
第四步:查看慢查询的数量
通过如下sql语句,来查看一共执行过几次慢查询:
show global status like '%slow%';
long_query_time 参数的查看
默认是10秒,10秒以上的sql会记录.可进行值的修改,
long_query_time 默认不开启 ,如果不是需要进行开始调优,一般不建议开启此参数.
永久开启:
在my.cnf中的
①查看慢查询的时长
看此图默认10秒,是大于10秒,不等于10秒.
临时修改,重启mysql后失效,修改后需要新开连接才能查询到
永久在配制文件中修改
查看慢sql个数
将所有没有使用带索引的查询语句全部写到慢查询日志中
设置没带索引的慢sql进行记录
最后汇总my.cnf配制