我們在我們的Rails應用程序中使用章魚將查詢直接轉發到我們的奴隸盒,並寫入我們的主人。不得不說它是一個偉大的創業板,但我們注意到向奴隸的查詢放棄了Active Record的默認SQL緩存。這種方式挫敗了數據庫服務器水平擴展的目的,只有在緩存層面上纔會有所幫助,從而有助於擴展。使用Octopus Gem與Rails SQL緩存
有沒有人有關於如何解決這個問題的想法,還是有更好的寶石使用。我們不需要章魚給出的分片功能;只是複製。提前
感謝
我們在我們的Rails應用程序中使用章魚將查詢直接轉發到我們的奴隸盒,並寫入我們的主人。不得不說它是一個偉大的創業板,但我們注意到向奴隸的查詢放棄了Active Record的默認SQL緩存。這種方式挫敗了數據庫服務器水平擴展的目的,只有在緩存層面上纔會有所幫助,從而有助於擴展。使用Octopus Gem與Rails SQL緩存
有沒有人有關於如何解決這個問題的想法,還是有更好的寶石使用。我們不需要章魚給出的分片功能;只是複製。提前
感謝
SQL緩存被打開的連接的方式是通過執行類似
ActiveRecord::Base.connection.cache do
# the query cache is used here
end
# and turned off by here
對於主ActiveRecord的連接軌道具有齒條中間件設置此爲每個請求。如果你想讓這種情況發生在你的從屬連接上,那麼你需要自己做一些類似的事情來啓用第二個連接的緩存(比機架中間件稍微容易一些)
我不是很熟悉章魚,但它似乎可能這兩個連接將是獨立的 - activerecord不會知道使您的讀取連接上的緩存失效,因爲您已經在您的其他連接上做了一些寫操作
謝謝你frederick ..看起來它會需要更多的工作。感謝您的反饋 – haider
我有一個關於八達通寶石的問題。你可以在這裏回答它http://stackoverflow.com/questions/29445495/rails-how-to-split-write-read-query-across-master-slave-database?noredirect=1#comment47064893_29445495 –