1

我想了解 MySQL 查询缓存是如何工作的。我已经检查了这个 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 时,我想知道结果是从缓存中还是从数据库中获取。?有人可以解释一下吗?因为他们在手册中提到了这一点

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

4

1 回答 1

1

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

查询缓存默认关闭。设置query_cache_size为字节大小以启用查询缓存。设置为 1024 字节的倍数。文档说:

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

另请注意有关查询缓存操作的以下内容:

在 MySQL 5.1.17 之前,prepared statements 不使用查询缓存。从 5.1.17 开始,prepared statements 在某些条件下使用查询缓存,这取决于准备方法。

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

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

select * from my_table where column = 'Myvalue';

SELECT * FROM my_table WHERE column = 'Myvalue';
于 2014-05-28T12:13:12.393 回答