memcachedで快速アプリケーション − @IT 上記の記事で、こんなことが書いてありました。 以下に、Railを使用する際に用いられる一般的なパフォーマンス向上方法を紹介しよう。 O/Rマッパーを介さずに直接SQL文を発行する →ActiveRecord::Base::find_by_sqlメソッド 部分テンプレートキャッシング →flagment_cache レコード走査時に、関連先オブジェクトを一括生成する →eager loading eager lodingというフレーズは聞いたことあるような気がしたけど、具体的に何かはよくわからなかったので調べました。 eager loadingとは 例えば下記のようなTaskモデルとProjectモデルがあったとして class Task < ActiveRecord::Base belongs_to :project end class
遅延読み込み(ちえんよみこみ、英語: Lazy loading)とは実際にオブジェクトが必要とされたときに後から初期化を行うソフトウェアデザインパターンの一つである。 実装[編集] 以下の一般的な4つの遅延読み込みデザインパターンの実装方法がある[1]。これらは利点と欠点を併せ持つ。 遅延初期化(英語: lazy initialization) Virtual Proxyパターン Ghost パターン Value Holder パターン 遅延初期化[編集] 遅延初期化(英語: lazy initialization)とは、オブジェクトや値そしてその他の初期化の負荷が高いものの生成を後から行う戦略のことである。 これは初期化完了を示すフラグを持ち、オブジェクトが呼び出されるごとにこのフラグを調べる。初期化が完了されていれば実際のオブジェクトを返す。初期化がまだ行われていない場合はその時点で初
ActiveRecordでN+1クエリを潰すためにeager loadingを行う場合、preloadやincludesやeager_loadが役に立つ。 Preload, Eagerload, Includes and Joinsという記事にそれらの違いがよくまとめられているんだけど、includesが挙動を変える条件があまり正確に書かれていなくて自信が持てなかったし、そもそも記事が古いのでRails4.1.5のソースを読んで調べた。 せっかく調べたので、全体を通して日本語でまとめてみようと思う。 User.joins(:posts).where(posts: { id: 1 }) # SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `posts`.`id
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く