Rails:如何跨主/从数据库分割写/读查询

我的网站有很大的读取流量。 比写入流量重很多。

为了提高我的网站的性能,我想到了主/从数据库配置。

octupus gem似乎提供了我想要的东西,但由于我的应用程序非常庞大,我无法通过数百万的源代码行来改变查询分布(将读取查询发送到从属服务器并将查询写入主服务器)。

MySQL Proxy似乎是解决此问题的好方法,但由于它是alpha版本,我不想使用它。

所以我的问题是什么是跨主/从服务器分割读/写查询的最佳方法?

是否可以在不使用rails中的任何gems的情况下拆分读/写查询?

使用章鱼gem,您不必更改大量代码,以使写入查询转到主数据库服务器,读取查询转到从属服务器。

这是一个简单的配置文件,如此处所述。

我过去曾尝试过这种做法,效果很好。 对我来说唯一的问题是,当奴隶关闭时,它不会将查询“重定向”到主数据库服务器,就像我在这里问的那样。

但是,如果要配置每个单独的查询目标,则需要一些工作。

我建议你开始映射更频繁的查询以及需要更长时间才能响应的查询。 了解这些查询后,您可以单独优化它们。 这可能已经解决了部分问题。

如果在此之后仍需要主从复制,请使用章鱼gem仅更改少数复杂查询的行为。

我掏出2颗gem,八达通和马卡拉。 我写了一篇比较这2个gem的博客: https : //ypoonawala.wordpress.com/2015/11/15/octopus-vs-makara-read-write-adapters-for-activerecord-2/

在我看来,Makara运作良好,弥补了Octopus的问题。