1

是否有可能使 MySQL 在表更新时不刷新缓存,并在刷新缓存之前保持缓存至少 10 分钟?

基本上,我正在缓存一个分析大约 200k+ 记录并返回 10 行数据的查询。查询大约需要 1.5 - 3 秒。我正在使用 SQL_CACHE 来缓存该查询,第一次之后需要 0.007(+-) 秒。表更新非常频繁(不到一分钟内多次)。所以我想让 MySQL 在刷新缓存查询以重新计算之前将缓存保留至少 10 分钟。

顺便说一句,查询数据对于网站上的每个用户都是唯一的。

我正在使用 Codeigniter 框架,我知道他们有一个内置的查询缓存功能,但是它是基于文件系统的。这就是为什么我更喜欢 MySQL 的缓存功能...

谢谢大家的帮助!

4

1 回答 1

0

三件事会导致从 MySQL 缓存中删除内容:

  1. 没有足够的空位
  2. 查询背后的数据发生了变化
  3. MySQL进程重新启动

您对#1 有相当程度的控制,因为您可以更改缓存大小。但是,其他查询仍然会占用缓存空间。我不知道控制 #2 有多重要。您可能希望使用它SELECT SQL_NO_CACHE来阻止那些进入缓存。

从事物的声音来看,MySQL 并没有为您提供以您想要的方式缓存事物所需的东西。

您是否考虑过优化查询?在那张纸条上,你能发布实际的查询吗?

于 2012-11-12T06:16:56.200 回答