MySQL缓存何时以及如何工作?

时间:2012-07-19 16:57:18

标签: mysql

SELECT SQ_CACHE * FROM TABLE where ID=1

问题

  • 如果在表中添加了新行,是否仍会保留缓存?
  • 如果ID=1以外的行仍然更新了我的缓存吗?
  • 我知道同一行是否更新缓存丢失。

1 个答案:

答案 0 :(得分:4)

  1. 阅读缓存失效(此处为the first hit I found)。 MySQL(或任何RDBMS)将在需要时使(部分)缓存数据无效。当实际上 让MySQL(或任何RDBMS)处理它。实际过程是(或可能)非常复杂;这就是为什么这些东西被抽象出来并由RDBMS为你处理。在磁盘上实际存储数据也是如此;你关心?或者你让RDBMS为你处理它?看到? ; - )
  2. 见1.
  3. 你走了。 (这是一个问题?:P)
  4. *除了一些角落案例或错误之外。

    “简短”答案(注意:特定于MySQL)将是: AFAIK MySQL以表级粒度缓存;因此,该表上的任何更改都将使该表的所有缓存结果无效。除此之外,只有确定性查询才会被缓存,事务可能绕过/使缓存无效,查询缓存不支持预处理语句,查询必须绝对完全相同才能使缓存完全启动(因此需要额外的空间)查询会导致缓存未命中)并且不支持子查询。然后还有其他因素。也许有些事情在最近的版本中发生了变化,但这些都是过去涉及的因素中的一些(并非全部!)。如果我错了,请纠正我。