Mysql慢查询日志每5秒钟记录相同的查询

时间:2013-05-17 21:58:14

标签: mysql database-performance sql-tuning

我在my.cnf中启用了以下变量:

log_slow_queries  = "/var/log/mysql/mysql-slow.log" 
long_query_time  = 2 
log-queries-not-using-indexes

并重新启动MySQL服务。然后mysql-slow.log每5秒重复记录2次查询(两者都是包含全扫描的小表,不涉及索引)。两个查询实际上花费不到0.01秒。并且日志文件变得越来越大。

我的服务器版本:5.5.31-0ubuntu0.12.04.1-log(Ubuntu)。

我想知道日志文件执行写入工作的频率,甚至是多余的工作?我们可以控制一些其他系统变量来减慢这项工作吗?还有一些类似的问题,例如:

rotating mysql slow query log

Mysql slow query log is logging faster queries

Logging slow queries in MySQL

...

有些专家可以解释一下吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

根据the slow query log上的文档,这是设计

  

服务器按以下顺序使用控制参数   确定是否将查询写入慢查询日志:

     
      
  1. 查询必须不是管理声明,或者   必须指定--log-slow-admin-statements。

  2.   
  3. 查询必须至少使用long_query_time秒,或者   必须启用log_queries_not_using_indexes,并且查询不使用   行查找的索引。

  4.   
  5. 查询必须至少检查过min_examined_row_limit行。

  6.   

另外,有关此variable setting does

的详细说明
  

如果您在启用慢查询日志的情况下使用此选项,则查询   将记录预期检索所有行的内容。见5.2.5节,   “慢查询日志”。这个选项并不一定意味着没有   使用索引。例如,使用完整索引扫描的查询使用   索引但会被记录,因为索引不会限制   行数。

每次触发时都会记录查询,直到它们被修改为与触发其日志的行为不匹配。如果您关注磁盘空间,可以按照您链接的其中一个问题中的建议轮换日志。请参阅此literature on logrotate and example configuration