我在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)。
我想知道日志文件执行写入工作的频率,甚至是多余的工作?我们可以控制一些其他系统变量来减慢这项工作吗?还有一些类似的问题,例如:
Mysql slow query log is logging faster queries
...
有些专家可以解释一下吗?
非常感谢!
答案 0 :(得分:2)
根据the slow query log上的文档,这是设计
服务器按以下顺序使用控制参数 确定是否将查询写入慢查询日志:
查询必须不是管理声明,或者 必须指定--log-slow-admin-statements。
查询必须至少使用long_query_time秒,或者 必须启用log_queries_not_using_indexes,并且查询不使用 行查找的索引。
- 醇>
查询必须至少检查过min_examined_row_limit行。
另外,有关此variable setting does,
的详细说明如果您在启用慢查询日志的情况下使用此选项,则查询 将记录预期检索所有行的内容。见5.2.5节, “慢查询日志”。这个选项并不一定意味着没有 使用索引。例如,使用完整索引扫描的查询使用 索引但会被记录,因为索引不会限制 行数。
每次触发时都会记录查询,直到它们被修改为与触发其日志的行为不匹配。如果您关注磁盘空间,可以按照您链接的其中一个问题中的建议轮换日志。请参阅此literature on logrotate and example configuration。