0

我们在 Rails 应用程序中使用 octopus 将读取查询直接转发到我们的从盒,并写入我们的主盒。不得不说它是一个很棒的宝石,但我们注意到对从属服务器的查询放弃了 Active Record 的默认 SQL 缓存。有点违背了水平扩展数据库服务器的目的,只是失去了有助于扩展的缓存层。

有没有人知道如何解决这个问题,或者有更好的宝石可以使用。我们不需要章鱼提供的分片功能;只是复制。

提前感谢

4

1 回答 1

0

为连接打开 SQL 缓存的方式是通过执行类似的操作

ActiveRecord::Base.connection.cache do
    # the query cache is used here
end
# and turned off by here

对于主要的 activerecord 连接,rails 有一个机架中间件,可以为每个请求设置它。如果您希望从属连接发生这种情况,那么您需要自己做一些类似的事情来为您的第二个连接启用缓存(比机架中间件稍微容易一些around_filter

我对章鱼不是很熟悉,但是这两个连接似乎很可能是独立的——activerecord 不会仅仅因为你在另一个连接上做了一些写操作就知道它在你的读连接上的缓存无效

于 2012-06-26T07:38:32.387 回答