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