我想了解MySQL查询缓存是如何工作的。我已经检查过this api
这些场景将如何工作。?
案例1

select * from my_table where column = 'Myvalue';

案例2
select * from my_table where column = 'test';

案例3
select * from my_table where column = 'Myvalue';

所以,当执行案例3时,我想知道结果是从缓存还是从数据库中获取。?有人能解释一下吗。?因为他们在手册中提到了这一点
查询必须完全相同(逐字节)才能被视为
完全相同。

最佳答案

由于查询1和3是相同的,只要第一个查询的结果仍然在query cache中,并且查询之间没有对表的更新,那么缓存将为第三个查询提供服务,而不是命中表。
默认情况下,查询缓存处于关闭状态。将query_cache_size设置为以字节为单位的大小以启用查询缓存。设置为1024字节的倍数。文件上说:
几十兆字节的大小通常是有益的。
还要注意以下关于query cache operation的内容:
在MySQL 5.1.17之前,准备好的语句不使用查询缓存。
从5.1.17开始,准备好的语句在
某些条件,根据制备方法的不同而不同。
如果表发生更改,则使用该表的所有缓存查询都将
无效,已从缓存中删除。
请注意,根据查询缓存,以下两个查询虽然返回相同的结果集,但并不相同:

select * from my_table where column = 'Myvalue';

SELECT * FROM my_table WHERE column = 'Myvalue';

08-18 14:23
查看更多