顾名思义,慢查询日志中记录的是执行时间较长的 query
可以设一个阀值、将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中
该阀值可以通过参数long_query_time来设置、默认是10秒
这里需要一点、对于运行时间正好等于long_query_time的情况、并不会被记录
因为、在源代码里是判断大于long_query_time、而非大于等于
mysql> show variables like 'log_slow_queries'; mysql> show variables like 'long_query_time'; |
另一个和慢查询日志相关的参数是log_queries_not_using_indexes
如果运行的SQL没有使用索引、则MySQL同样会将这条语句记录到慢查询日志文件
mysql> show variables like 'log_queries_not_using_indexes'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | log_queries_not_using_indexes | OFF | +-------------------------------+-------+ 1 row in set (0.00 sec) |
在这里、我没有开启、但有点需要提醒、如果在线修改该参数、虽然没有报错、但是不会生效
MySQL 还提供了专门用来分析满查询日志的工具程序 mysqldumpslow、用来帮助MySQL DBA解决可能存在的性能问题
例子、获得 TOP-5 SQL语句:
[mysql@localhost bin]$ ./mysqldumpslow -s al -n 5 /home/mysql/mysql/log/slow.log Reading mysql slow query log from /home/mysql/mysql/log/slow.log |