编者: 理解不该用的原因,可能是这个参数最大的意义了~
今天说下这个参数:min_examined_row_limit=N
参数的意思是,如果扫描行数少于N,则不记入慢查询日志,默认值是0。
我看到有文章建议说配置成1或者其他小整数。实际上恰恰相反,一个语句如果是慢查询,而它的扫描行数很小,反而应该被特别关注到。因为这很可能表示,系统现在处于不健康的状态。
常见的原因比如:
1. CPU压力大,系统不健康;
2. 是一个rows_examined=0 的 count(*)语句,可能需要优化;
3. 存在MDL锁,并发线程里有隐患;
4. 存在等待flush table的操作,危险信号
这些都是需要在慢查询中记录,并引起DBA注意的。
所以结论是,这个参数让它留着默认值,不要用就行了。
(到这里50%的同学表示,作者你不说,我也不知道这个参数呀)
编者: 理解不该用的原因,可能是这个参数最大的意义了。
讨论:
除了上面这些原因,如果有一个select * from t where id=1 (id是主键)的语句,执行了2秒以上,你觉得可能还有什么原因呢?
最近发现公众号文章可以留言了,欢迎留言~
====
往期文章推荐:1.MySQL 面试题直播四(秒杀场景优化/超卖/行锁)
原文作者:丁奇3306;如有侵权,请联系管理员删除。