0

かなり大きなMySQLユーザーテーブルにヒットし、実行に時間がかかるクエリがあります。現在、Resqueバックグラウンドジョブの一部です。本番環境ではなく、MySQLスレーブデータベースにヒットする可能性があるように依頼されました。これにより、本番環境にサインアップしている可能性のあるユーザーの速度が低下するのを防ぐことができます。これが理にかなっているのかどうか疑問に思っています。そうであれば、特定のクラスでクエリしているデータベースをどのように切り替えるのでしょうか。

これまでのところ、Resqueジョブクラスに次のようなものを追加すると思います。私が持っているもう1つの質問は、それがその特定のクラスにのみ適用できるのか、それとも他の仕事にも干渉する可能性があり、間違った場所を指しているのかということです。

class ResqueJob
 @queue = :resque_job

 def self.perform(id)
   ActiveRecord::Base.establish_connection("slave_database")
   users = User.all (for example)
 end
end
4

1 に答える 1

0

Octopusを使用する必要があると思います。こちらの小さなデモ プロジェクトもお読みください: Octopus Replication Example

于 2013-01-15T21:33:08.873 に答える