2009-04-30 3 views
1

私は約3歳のレールアプリケーションを使用していますが、ページが多すぎてクエリに問題があります。ロードするページには、次のような行がいくつかあります。レールコントローラをデバッグして多数のクエリを作成する

ReqTdsLink Columns (1.0ms) SHOW FIELDS FROM `req_tds_links` 

どのようなメソッド呼び出しでログに出力されるのですか?私はフィルタの前に、これを引き起こしている可能性のあるアプリケーションコントローラの何かを見つけることができませんが、私はすべてのビュー(これは天文学的です)をまだチェックしていません。私は手動で各ファイルをスキャンして、これを引き起こす可能性のあるものを探し始めます。これは、データベースからのモデルの属性を読み込むのActiveRecordによって呼び出され

-C

+0

使用しているRails/ActiveRecordのバージョンを教えてくれませんでした。 ActiveRecordは3年で大きく変化し、クエリのキャッシュとクエリの最適化が大幅に改善されました。 –

答えて

0

この行は実際にモデルを呼び出すことから来ています。私は[Model1、Model2、Model3]のように見えるアプリケーションコントローラ内の配列を持っていましたが、[Model1 '、' Model2 '、' Model3 ' ]それはすべての余分な呼び出しを修正しました。

1

おかげで、。本番環境では何度も発生することはありませんが、開発モードでは、発生した可能性のある変更を取り上げるたびに、Railsはテーブルをクエリします。

2

開発モードまたはプロダクションモードで実行していますか?

は、お使いのモデルによって実行されます。したがって、生成するアクセサメソッドが分かります。

開発モードではこれはすべての要求に対して実行されるため、Webサーバーを頻繁にリロードする必要はありませんが、運用モードでは、3年前のバージョンのRailsを実行していてもキャッシュされます。

+0

これはRails 2.1.2で確かに当てはまりますが、これは私が現在行っているところです。 –

1

このような問題が再び発生し、クエリの呼び出し方法を追跡する必要がある場合は、クエリトレースプラグインをお勧めします。http://github.com/ntalbott/query_trace/tree/master。 SQLクエリごとにスタックトレースをログに追加します。とても便利な。

関連する問題