[英]Query Caching MySQL
我尝试使用查询缓存。 缓存应将查询与结果一起存储。 因此,我在my.cnf中启用了查询缓存。 在持续时间上向我展示了它的工作原理:
RESET QUERY CACHE;
SELECT * FROM t_data GROUP BY col2; //duration: 0.034sec
SELECT * FROM t_data GROUP BY col2; //duration: 0.015sec
SELECT * FROM t_data GROUP BY col2; //duration: 0.014sec
其实一切都很好,但是之后我在此查询上使用了EXPLAIN。 那就是结果:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | t_data | ALL | | | | | 921 | Usi..
那么,为什么我在列行中得到921? 结果只有15行。 如果认为MySQL在缓存中使用此查询所连接的表。 为什么再次在整个表中搜索MySQL? 是我的第一篇文章。 希望一切正确!
执行计划 说明了MySQL如何执行查询 (强调我的意思)。 换句话说,这是询问MySQL如何处理给定的SQL查询以获取请求的信息的结果。 这样,通常可以很好地估计查询的速度,但并不意味着实际执行查询。 另外,它也不显示实际的行号,主要是因为它通常不知道实际数字,并且如果不实际运行查询就不可能得到它。
另一方面, MySQL Query Cache是一项功能,可完全避免执行查询:
查询缓存将SELECT语句的文本与发送到客户端的相应结果一起存储。 如果稍后接收到相同的语句,则服务器从查询缓存中检索结果,而不是再次解析并执行该语句 。
您将在实际查询执行时获得的指标称为分析 ; 这是完全不同的事情。 据我所知,有些DBMS提供了非常好的按查询进行性能分析的功能,据我所知,MySQL只有一些通用数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.