清除MySQL查询缓存而无需重新启动服务器

Mah*_*r13 152 mysql caching

有没有办法在不重新启动mySQL服务器的情况下清除 mysql 查询缓存

Joh*_*ker 204

我相信你可以用......

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

...如果您正在运行的用户具有重新加载权限.或者,您可以通过...对查询缓存进行碎片整理.

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

有关详细信息,请参阅MySQL手册的" 查询缓存状态和维护"部分.

  • RESET QUERY CACHE将清除查询缓存,但需要RELOAD权限.FLUSH QUERY CACHE不清除查询缓存,它只是对它进行defrags,使缓存的查询结果保持不变 (26认同)
  • 出于某种原因,`RESET QUERY CACHE` 实际上并没有为我清除它。此外,MySQL 服务器重启也无济于事。显式的`SELECT SQL_NO_CACHE` 可以解决问题,但不是`RESET QUERY CACHE`。`同步&&回声3 | 来自其他答案的 sudo tee /proc/sys/vm/drop_caches` 也没有帮助。 (2认同)

Les*_*zek 44

在我的系统(Ubuntu 12.04)中,我发现RESET QUERY CACHE甚至重启mysql服务器还不够.这是由于内存光盘缓存.
每次查询后,我清理终端中的光盘缓存:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

然后重置mysql客户端中的查询缓存:

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

  • 请注意,MySQL中的"查询缓存"不是一般的页面/块缓存.它是_results_查询的缓存.并不总是有用 - 我们不使用它.http://dev.mysql.com/doc/refman/5.6/en/query-cache.html (2认同)

Man*_*ger 18

根据文件,这应该做到......

RESET QUERY CACHE 
Run Code Online (Sandbox Code Playgroud)


Ton*_*ony 8

对于像我这样的其他人来说,正在寻找一种清除查询缓存的方法并发现这个问题,查询缓存已被弃用

从 MySQL 5.7.20 开始,查询缓存已被弃用,并在 MySQL 8.0 中被删除。

因此命令RESET QUERY CACHEFLUSH QUERY CACHE已被删除。

更多信息请查看数据库管理员的答案:MySQL 为什么在 8.0 版本之后删除了查询缓存功能?