【MySQL】慢日志大量生成 long-query-time “失效”问题

记一次long query time“失效” 导致slow query log大量写入的问题


【问题描述】:
情况是这样的,准备修改一台db server的mysql慢查询日志的配置,目前是写在/var/log/mysql中的log中。
想要修改存放到表中。
修改slow-log的output无意发现:


条件设置为query_time=00:00:00时,居然有5000多条,惊呆了。(并且持续增长)
mysql> select count(*) from mysql.slow_log where query_time='00:00:00';


继续执行了重复的命令,发现数量仍然在增加。
第一反应是不是long query time太短,立马查询了一下:
mysql> show variables like '%long_query%';  发现并不短。







翻了一下文档:
有一个全局的动态生效的“log_queries_not_using_indexes”参数,
这个参数官方给出的解释大概意思是“只要没有用索引的任何查询都将会被记录到slow query log中”。


在server中查了一下这个参数。。
mysql> show variables like '%index%';
果然是ON的状态。而且可以动态修改,不需要停服务。
赶紧关闭……

【解决方案】:
mysql> set global log_queries_not_using_indexes=OFF;



同时检查my.cnf,将该值设置为OFF,以保证库重启之后不再打开该值。

基本搞定。


作者公众号(持续更新)


请使用浏览器的分享功能分享到微信等