首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MYSQL中实现真正清晰的缓存?

问如何在MYSQL中实现真正清晰的缓存?
EN

Stack Overflow用户
提问于 2019-11-06 00:12:31
回答 4查看 4.3K关注 0票数 1

我想多次运行相同的查询,看看它在没有缓存内存的帮助下花费了多少时间。运行命令重置查询缓存似乎不起作用,因为即使在缓存重置之后,第二次运行也需要很短的时间。我遗漏了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-06 01:21:30

您可以在SQL_NO_CACHE查询中使用SELECT。

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

请记住,查询缓存在MySQL的后期版本中已被删除。

根据存储引擎的不同,它将表数据作为缓冲池的一部分加载到内存中。这一部分您不能真正控制哪些表要加载,哪些表不能加载(或者至少不容易)。

票数 2
EN

Stack Overflow用户

发布于 2019-11-06 00:50:21

您的操作系统正在缓存大量数据。然后DBMS本身缓存整个数据。查询缓存只保存上一次查询的输出。查询输出的数据可能都在RAM中。如果您想在没有缓存的情况下运行查询,那么在执行之间关闭主机,或者运行一个查询,该查询将从磁盘读取足够多的数据以覆盖所有缓存。但是,这将不是一个实际的衡量指标。in您的查询将在野外执行。

票数 3
EN

Stack Overflow用户

发布于 2019-11-06 02:06:39

两个“缓存”会影响查询。Query Cache和Buffer Cache(buffer_pool with InnoDB and key_buffer with MyISAM).Query cache的影响比Buffer Cache大得多,因为它缓存查询的结果,因此相同的查询不会再次执行。

为了避免Query Cache,使用SQL_NO_CACHE是个好主意,您可以在my.cnf中禁用Query Cache并重新启动mysql。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58721299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档