2011-03-08 62 views

回答

173

我相信你可以使用...

RESET QUERY CACHE; 

...如果你正在运行的用户重装权利。或者,你可以整理通过查询缓存...

FLUSH QUERY CACHE; 

见MySQL手册的Query Cache Status and Maintenance部分获取更多信息。

+23

RESET QUERY CACHE将清除查询缓存,但需求RELOAD权限。 FLUSH QUERY CACHE不会清除查询缓存,只是将其碎片整理,留下缓存的查询结果 – carpii 2012-05-10 21:55:38

+0

这真的有所帮助。我们使用带有10个连接的池的MySQL使用NodeJS。我们正面临数据被一个连接写入并被其他人读取的问题,并且正在大量缓存。这一个似乎有很大的帮助。 Thx, – psuhas 2016-10-23 01:43:21

+0

出于某种原因,'RESET QUERY CACHE'实际上并没有为我清除它。另外,MySQL服务器重启不起作用。一个明确的'SELECT SQL_NO_CACHE'可以解决这个问题,但不是'RESET QUERY CACHE'。 sync && echo 3 | sudo tee/proc/sys/vm/drop_caches'也没有帮助。 – 2017-08-24 23:41:16

39

在我的系统(Ubuntu 12.04)中,我发现RESET QUERY CACHE甚至重启mysql服务器还不够。这是由于memory disc caching
每个查询后,我清洁光盘高速缓存在终端:

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

,然后重新在mysql客户端查询缓存:

RESET QUERY CACHE; 
+2

请注意,MySQL中的“查询缓存”不是一般的页面/块缓存。它是查询_results_的缓存。不总是有用 - 我们不使用它。 http://dev.mysql.com/doc/refman/5.6/en/query-cache.html – 2013-10-11 18:47:33

+0

@phil_w是否有一种方法可以重置mysql使用的页面/块的缓存,而无需重新启动mysql并清除(linux) OS缓存? – matanster 2014-12-10 17:30:41

相关问题