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


162

有什么方法可以在不重启mySQL服务器的情况下清除 mysql 查询缓存

Answers:


218

我相信你可以使用...

RESET QUERY CACHE;

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

FLUSH QUERY CACHE;

有关更多信息,请参见MySQL手册的“ 查询缓存状态和维护”部分。


27
RESET QUERY CACHE将清除查询缓存,但需要RELOAD特权。FLUSH QUERY CACHE不会清除查询缓存,它只是对其进行碎片整理,将缓存的查询结果保留在原位
carpii 2012年

这确实有帮助。我们使用带有10个连接池的MySQL使用MySQL的NodeJS。我们面临的问题是,一个连接写入数据,而另一个连接读取数据,并且该数据被大量缓存。这似乎有很大帮助。Thx,
psuhas '16

2
由于某种原因,RESET QUERY CACHE实际上并没有为我清除它。另外,MySQL服务器重启也无济于事。显式方法SELECT SQL_NO_CACHE可以解决问题,但不能RESET QUERY CACHEsync && echo 3 | sudo tee /proc/sys/vm/drop_caches从另一个答案也没有帮助。
雅尼斯·埃默里斯(JānisElmeris)'17

1
机器重启也无济于事。
雅尼斯·埃默里斯(JānisElmeris)'17

45

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

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

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

RESET QUERY CACHE;

2
请注意,MySQL中的“查询缓存”不是常规的页面/块缓存。它是查询结果的缓存。并非总是有用-我们不使用它。dev.mysql.com/doc/refman/5.6/en/query-cache.html
phil_w

@phil_w是否可以在不重新启动mysql并清除(linux)OS缓存的情况下重置mysql使用的页面/块的缓存?
matanster

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.