背景:
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性能也有很大帮助。
标签:count,tables,buffer,mysql,sql,主键,pool From: https://www.cnblogs.com/sxdcgaq8080/p/18388797