繁体   English   中英

MySQL查询缓存工作

[英]MySQL query caching working

我想了解MySQL查询缓存的工作方式。 我已经检查过这个API

这些方案将如何工作?

情况1

select * from my_table where column = 'Myvalue';

情况二

select * from my_table where column = 'test';

情况3

select * from my_table where column = 'Myvalue';

因此,当执行情况3时,我想知道结果是从缓存中获取还是从数据库中获取。 有人可以解释吗? 因为他们在手册中提到了这一点

查询必须完全相同(逐字节),才能被视为相同。

由于查询1和3相同,因此只要第一个查询的结果仍在查询缓存中,并且查询之间的表没有更新,则第三个查询将由缓存提供服务,而不是命中该表。

默认情况下,查询缓存处于关闭状态。 query_cache_size设置为字节大小以启用查询缓存。 以1024字节的倍数设置。 该文件说:

通常,数十兆字节的大小是有益的。

另请注意以下有关查询缓存操作的信息

在MySQL 5.1.17之前,准备好的语句不使用查询缓存。 从5.1.17开始,已准备好的语句在某些条件下使用查询缓存,具体情况取决于准备方法。

如果表发生更改,则所有使用该表的缓存查询都将变为无效,并从缓存中删除。

请注意,根据查询缓存,以下两个查询虽然返回相同的结果集,但它们并不相同:

select * from my_table where column = 'Myvalue';

SELECT * FROM my_table WHERE column = 'Myvalue';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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