繁体   English   中英

查询缓存MySQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM