gpt4 book ai didi

MySQL 刷新查询缓存

转载 作者:可可西里 更新时间:2023-11-01 07:18:35 26 4
gpt4 key购买 nike

我有一个缓慢的数据库查询,第一次运行需要 18 秒,后续运行需要 4 秒。我正在尝试优化它的“冷启动”执行时间。但无法连续重现。

select SQL_NO_CACHE 指令没有帮助。

下面的命令都不会让它再次运行 18 秒:

FLUSH QUERY CACHE;
RESET QUERY CACHE;
FLUSH TABLES;

即使重新启动数据库也不会使其再次运行很长时间。

有没有其他刷新缓存的命令?

表引擎是InnoDB。

最佳答案

让我解释一下为什么它没有帮助。

您的要求:在这里,您尝试再次运行相同的查询,但您希望它仅通过清理缓存来像第一次运行时那样执行。

当查询运行时,会出现多种类型的缓存。“查询缓存”是我们谈论的最常见的缓存,然后是 MySQL 缓存(例如 Innodb 缓冲池)、table_cache(在 MySQL 级别和 InnoDB 级别)、操作系统缓存、硬件缓存。

选择 SQL_NO_CACHE : 这将阻止运行查询以保存任何“查询缓存”,这意味着如果您将再次运行相同的查询,则不会有任何“查询缓存”,但其他缓存将存在在图片中。

FLUSH QUERY CACHE:这只是对“查询缓存”进行碎片整理以更好地利用其内存

RESET QUERY CACHE : 从“查询缓存”中删除所有查询结果,如果您在之前的所有查询中使用了“SQL_NO_CACHE”,这不会影响。

  • 除了您正在尝试的方法之外,您还可以尝试一些其他方法来避免这些缓存。
  • “MySQL 缓存”(Innodb 缓冲池)必须重新启动 MySQL,那里别无他法。
  • 设置全局key_buffer_size=0;使 key 缓冲区大小为零
  • 设置全局query_cache_type=0;
  • 设置全局query_cache_size=0;
  • 操作系统级缓存:this帖子可能对你有帮助

关于MySQL 刷新查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15268005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com