2010-09-18 196 views

回答

2
+0

我見過這個方法。但是,在MyModel.connection上調用它似乎沒有任何作用。我正在做批量插入,並需要清除查詢緩存,以便ActiveRecord可以看到新記錄,但到目前爲止我還沒有成功。 – clacke 2011-10-20 18:11:46

+1

看來,在Rails 2中,您可以通過「ActiveRecord :: Base.query_cache.clear_query_cache」訪問查詢緩存,但現在該位置消失了。就像我說的那樣,在模型的連接上做這件事情是行不通的。最後,我解決了這個問題,完全落後於AR的背後,也是在質量插入之後的查詢。 – clacke 2011-10-20 19:39:29

+0

@ clacke你能發佈你發現的最終解決方案嗎(「完全落後於AR的背部」)?還是你間接地說你使用SQL而不是AR? – jvatic 2012-01-04 20:42:28

23

看看方法clear_query_cache對於第一近似:

ActiveRecord::Base.connection.query_cache.clear 
0

通常情況下,當你看到數據庫的查詢緩存,你的數據庫做緩存,而不是ActiveRecord的,這意味着您需要清除數據庫級別的緩存和緩衝區,而不是ActiveRecord級別。

例如,要清除Postgres的緩存和Mac上的緩衝區,您將執行sudo purge,這會強制刷新和清空磁盤緩存。

要清除Postgres的高速緩存和緩衝區在Linux上,你會停機的Postgres,刪除緩存,並再次開始上升的Postgres的:

service postgresql stop 
sync 
echo 3 > /proc/sys/vm/drop_caches 
service postgresql start 

延伸閱讀: