かなり大きな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