2011-03-08 113 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

相關問題