我想了解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时,我想知道结果是从缓存还是从数据库中获取的。有人能解释一下吗?因为他们在手册中提到了这一点
查询必须完全相同(字节表示字节),才能被视为相同。
发布于 2014-05-28 12:13:12
因为查询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';https://stackoverflow.com/questions/23889023
复制相似问题