min_examined_row_limit=N

如果扫描行数少于N,则不记入慢查询日志,默认值是0。

我看到有文章建议说配置成1或者其他小整数。实际上恰恰相反,一个语句如果是慢查询,而它的扫描行数很小,反而应该被特别关注到。因为这很可能表示,系统现在处于不健康的状态。

常见的原因比如:

  1. CPU io 等压力大 ,系统不健康;
  2. 是一个rows_examined=0 的 count(*)语句,可能需要优化;
  3. 存在MDL锁,并发线程里有隐患;
  4. lock table t write引起
  5. 存在等待flush table的操作,危险信号
  6. 表t含有大量的大字段
  7. 这条数据是(高并发修改,且长时间不提交)热点数据

这些都是需要在慢查询中记录,并引起DBA注意的。

所以结论是,这个参数让它留着默认值,不要用就行了

mp.weixin.qq.com