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",则不会影响查询结果.