假设我有一个我想被缓存的查询,而只有这个查询,任何其他查询都是无关的。
由于我的数据库接收了大量的流量,我的缓存空间迟早会耗尽,而缓存的查询将失效。我是否可以设置某种机制(仅在MySQL中,没有外部工具),它只允许对该查询进行缓存,并且可以说,每天晚上它都更新缓存的结果?
发布于 2016-12-22 16:38:19
MySQL中有两种类型的“缓存”
两者都有可配置的限制。
“缓存”意味着保留有限的空间。当您“用完”空间时,会有一些东西从缓存中跳出来,以便为新项目腾出空间。被淘汰的通常是“最近使用最少的”,如果没有其他信息,很快就不太可能再次被使用了。
所以,我不知道问题出在哪里。
另一方面,也许你问的是另一个问题.使用“查询缓存”,将SELECTs保存在其中。这个缓存保存查询及其结果集。(同样地,当旧条目被填满时,就会出现旧条目,以便为新条目腾出空间。)QC的一个主要缺点是,当发生任何写入时,该表的QC中的所有条目都会被清除。因此,对于经常写入的表,QC实际上是无用的。
对于少数几个能够有效使用QC的系统,下面是我的建议:
query_cache_type = DEMAND
query_cache_size = 50M -- no more than this, else purging is too costly
SELECT SQL_CACHE ... -- on queries that can benefit from the QC
SELECT SQL_NO_CACHE ... -- for the resthttps://dba.stackexchange.com/questions/158740
复制相似问题