如何在MYSQL中真正清除缓存?

我想多次运行相同的查询,以了解在没有高速缓存的情况下需要花费多少时间。 运行命令RESET QUERY CACHE似乎不起作用,因为即使重新设置了缓存,查询在第二次运行中的时间也很短。 我想念什么?

wuyancindy 回答:如何在MYSQL中真正清除缓存?

您的操作系统正在缓存大量数据。然后,DBMS本身会缓存全部数据。查询缓存仅保存先前查询的输出。创建查询输出的数据可能全部在RAM中。如果要运行查询而不进行任何缓存,请在两次执行之间关闭主机或运行查询,该查询将从磁盘读取足够的数据以覆盖所有缓存。但这不是您查询将在野外执行的现实方法。

,

您可以在SQL_NO_CACHE查询中使用SELECT

https://dev.mysql.com/doc/refman/5.5/en/query-cache-in-select.html

请记住,MySQL的更高版本中已删除了查询缓存。

根据存储引擎(例如innodb),它将表数据作为缓冲池的一部分加载到内存中。这部分您无法真正控制要加载的表和不加载的表(或至少不容易)。

,

两个“缓存”会影响查询。 Query CacheBuffer Cache(buffer_pool with InnoDB and key_buffer with MyISAM)Query cache的影响远大于Buffer Cache,因为它缓存查询的结果,因此同一查询将不再执行。

要避免使用Query Cache,请使用SQL_NO_CACHE,可以在Query Cache中禁用my.cnf并重新启动mysql。

Buffer cache由mysql管理,可将数据缓存在内存中,以便您的查询不会从磁盘(SSD或HDD)读取数据。如果要清除它,请尝试将“缓冲区缓存”设置得足够小,并用其他数据填充(使用SELECT)。

,

在旧版本的 MySQL (v.5.1) 上,我遇到了缓存视图的问题,该视图永远不会刷新。我尝试了 RESET QUERY CACHEFLUSH TABLESSELECT SQL_NO_CACHE... 等。但没有任何效果。然后,我将在此视图中查询的底层(单个)表的存储引擎从 InnoDB 更改为 MyISAM,并且它隐式地按预期工作!无需跳过任何环节来清除或阻止缓存!

我不确定这是否只是旧版本/存储引擎的错误?如果您对此事有任何了解,请发表评论。

本文链接:https://www.f2er.com/3155679.html

大家都在问