MySQL刷新查询缓存

Bog*_*iev 4 mysql performance query-cache

我有一个慢速数据库查询,第一次运行时运行18秒,后续运行运行时间为4秒.我正在尝试优化它的"冷启动"执行时间.但不能连续复制它.

select SQL_NO_CACHE 指令没有帮助.

以下命令均不会再次运行18秒:

FLUSH QUERY CACHE;
RESET QUERY CACHE;
FLUSH TABLES;
Run Code Online (Sandbox Code Playgroud)

即使数据库重启也不会让它再次运行.

是否还有其他命令可以刷新缓存?

表引擎是InnoDB.

小智 9

让我解释为什么它没有帮助.

Your Requirement :在这里,您尝试再次运行相同的查询,但是您希望它仅通过清理缓存来执行第一次运行.

当查询运行时,有多种类型的缓存进入图片.'Query Cache'是我们谈论的最常见的缓存,然后是MySQL缓存(例如Innodb缓冲池),table_cache(在MySQL级别和InnoDB级别),OS缓存,硬件缓存.

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

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

RESET QUERY CACHE : 从"查询缓存"中删除所有查询结果,如果您在之前的所有查询中都使用了"SQL_NO_CACHE",则不会影响查询结果.

  • 除了你正在尝试的东西,你可以尝试避免这些缓存的更多事情.
  • MySQL Restart必须用于'MySQL Caches'(Innodb缓冲池),没有其他办法.
  • set global key_buffer_size = 0; 使密钥缓冲区大小为零
  • set global query_cache_type = 0;
  • set global query_cache_size = 0;
  • 操作系统级缓存:这篇文章可以帮到你