【Mysql】mysql count主键字段很慢超时 执行计划Select tables optimized away ,最终调整buffer pool问题解决

 

背景:

 

mysql表  主键字段 count,速度很慢,耗时将近30s

 

 

 

从执行计划可以看出:

explain SELECT COUNT(rule_id) AS dataCount FROM `sku_safe_stock_rule`;

 

 

 

原理分析:

Select tables optimized away

SELECT操作已经优化到不能再优化了
(MySQL根本没有遍历表或索引就返回数据了)

由此可以看出 本sql语句执行解析后,直接在 mysql buffer缓存即可命中,不用去存储引擎遍历表即可返回结果。



 




 

 

 

继续分析:

 

但是既然直接在缓存命中后即可返回count()结果,为什么仍然这么慢?

  这里便引出 mysql  buffer pool这个概念.  (详细原理可再查再学)

 

 

 

最终解决:

最终,发现 
1.
mysql  buffer pool只有 512M。
调整为 2G后, 该条count(主键) sql性能便提升飞速。


 2.
 mysql表中总数据量440W+, 失效数据很多,执行sql工单,归档无效数据后,对sql性能也有很大帮助。 

 

posted @ 2024-08-30 15:10  Angel挤一挤  阅读(16)  评论(0编辑  收藏  举报