【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 @   Angel挤一挤  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2023-08-30 [Mongo]MongoDB连接池推荐配置
2023-08-30 【Redis】JedisPool资源池优化
2023-08-30 [MySQL]关于在更新JDK版本后插入mysql时间与本地时间相差13或14小时的问题
2023-08-30 【TCP】TCP Timers
2021-08-30 【arthas】 arthas命令记录
2018-08-30 【redis】spring boot中 使用redis hash 操作 --- 之 使用redis实现库存的并发有序操作
2018-08-30 【多线程】java多线程Completablefuture 详解【在spring cloud微服务之间调用,防止接口超时的应用】【未完成】
点击右上角即可分享
微信分享提示