关于MySQL的慢查询日志在进行SQL优化时,要重点找出执行速度较慢或占系统资源较多的语句.通过开启MySQL的慢查询日志可以做到这一点.(1)如何开启MySQL的慢查询日志在配置文件my.cnf中添加以下参数:log-slow-queries=/opt/log/slow.log long_query_time=2注意参数不要写错了,否则慢查询日志是开启不了的.参数解释:log-slow-queries为记录慢查询的位置和文件名称,注意mysql用户在/opt/log下有可写权限才行。如果后面的值为空,则MySQL Server会给慢查询日志赋予主机名,并被放在mysql默认的数据目录下。long_query_time为执行时间的上限,即超过这个设置时间的SQL定义为慢查询并被记录,默认值为10s。上述两个参数加入后,要重启MySQL Server才会生效。(2)参数log-queries-not-using-indexes如果设置了参数log-queries-not-using-indexes,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入这一行可以记录这些查询.这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)(3)慢查询日志分析工具mysqldumpslowMysqldumpslow主要的参数有以下几个:-s:列出SQL的排列顺序标准,后面可以有这么几个:t 总执行时间c 执行的总次数llock的时间r返回的记录数-t,是top n的意思,即为返回前面多少条的SQL -g,后边可以写一个正则匹配模式,大小写不敏感-r,该工具默认的排序顺序是降序,用-r表示升序排序-a, don't abstract all numbers to N and strings to 'S' --- 默认情况下,在where语句中等号右边的数字和字符串是被抽象成N或者S的.这非常必要.因为我们要分析的是一类SQL,找出它们的共性来分析,而不是具体的针对某一条SQL语句.
例子:mysqldumpslow -s c -t 20 localhost-slow.log > result.sql返回访问次数最多的20个SQL语句 mysqldumpslow -s r -t 20 localhost-slow.log > result.sql 返回记录集最多的20个SQL语句> result.sql mysqldumpslow -t 10 -s t -g “left join” localhost-slow.log 这个是按照查询时间返回前10条里面含有左连接的SQL语句