2011-06-23 10 views
2

私はherokuで自分のアプリケーションを実行しています。データベース集中型のアプリケーションで、約150のテーブルを使用します。したがって、それは非常に遅いです。リクエストごとにRails3ローディングモデルスキーマ

私はそれを拡張して、問題を把握するためにnewrelicを設定しています。 次に、使用されたモデルごとに、要求ごとにスキーマをロードするためにレールが追加クエリを実行していることがわかりました。例えば

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
FROM pg_attribute a LEFT JOIN pg_attrdef d 
ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
WHERE a.attrelid = '"sub_regions"'::regclass 
AND a.attnum > 0 AND NOT a.attisdropped 
ORDER BY a.attnum 

は、どのような方法がありますが、私はすべてのリクエストに応じて、モデルのスキーマをロードするためにレールを防ぐことができますか?

ご協力いただければ幸いです。もちろん

答えて

2

あなたはproduction.rbファイルで真config.cache_classes =ことを確認することができますか?

+0

ありがとう。今解決されました。 – MKumar

0

おかげで、あなたはActiveRecordののselectでロードしたい列を選択することができます。

はパラ2.5 Selecting Specific Fieldshereを参照してください。

+2

私は質問があなたのクエリに属性をselctingについてだと思ういけません。 私はまったく同じ問題に直面しています...それはレールがモデルをロードするすべての要求でこれらのクエリを実行しているようです。その後、モデルのクエリが実行されます。 私はレールが開発モードでのみリクエストごとにモデルをロードすると考えましたが、プロダクションモードでも毎回モデルをロードしているようです。 –

関連する問題