2011-11-14 26 views

回答

-1

middleware documentation

的ActiveRecord ::實現QueryCache緩存中的所有請求生成的SELECT查詢。如果發生任何INSERT或UPDATE,則清除緩存。

+0

我因爲'ActiveRecord :: QueryCache'不是在哪裏準備好的語句被緩存而降低了投票率。準備好的語句是專門爲該查詢編譯的語句,以便Rails不需要經過每次請求重新編譯它的昂貴任務。 QueryCache用於存儲查詢結果。 – Hengjie

1

我一直在尋找這個,看起來既然準備好的語句緩存是在數據庫連接器中實現的,那麼數據庫連接器就是它應該被清除的地方。

查看activerecord-oracle_enhanced-adapter,在版本1.4.1中添加了'statement_limit'配置,默認配置爲250.適配器每當向預處理語句緩存中添加語句時,都會首先從預備語句中刪除預處理語句的緩存(只是一個數組),直到它的限制。

如果你想清除所有的預處理語句,你可以做,通過調用connection.clear_cache!

這僅僅是爲oracle_enhanced驅動程序。如果你使用postgresql或其他東西,請檢查該驅動程序的文檔。希望這可以幫助。

+0

謝謝。我真的不記得爲什麼我問這個問題,但它與Rails上的多租戶有關。我認爲他們已經修補了一些東西,以便查詢緩存不再是問題。 :) –