BT

Entity Framework 5 - パフォーマンスの考慮事項

| 作者: Roopesh Shenoy フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2012年4月15日. 推定読書時間: 2 分 |

原文(投稿日:2012/04/10)へのリンク

Entity Framework (EF) 5はEF 4と比べて大幅にパフォーマンスを改善すると約束されているが、ORMを効率良く使うには、ビュー生成、キャッシュ、自動コンパイルクエリ、クエリ実行オプション、設計時の配慮など、考慮すべきことがある。

これに関連して、Microsoftはホワイトペーパーをリリースした。ここにはまだリリースされていないEntity Framework 5を使ったときのパフォーマンスの考慮事項について、いろいろと説明されている(今度の.NET 4.5で動作する)。

見ておくべき興味深いポイントを以下にあげる。

  • コールド対ウォーム クエリ実行 – クエリの初回実行時には、オーバーヘッドとなるビュー生成ステップ(データベーススキーマを概念スキーマにするのに必要な変換など)がある。 – それ以後の実行はビューキャッシュによって高速化される。ビューを事前生成することで、パフォーマンスを改善できる可能性がある。
  • キャッシュ – オブジェクトレベルにおける(具体的にはAutoDetectChangesを無効にすることと合わせてDbContext Find()を改善)、クエリ計画のキャッシュ、メタデータのキャッシュ、リザルトのキャッシュ。EFにはまだセカンドレベルキャッシュがないが、その実装指針は存在する。CodePlexにあるサンプルとJulia Lerman氏の記事 “Second Level Caching in Entity Framework and Windows Azure”を参照。
  • NoTrackingクエリのオプション(状態トラッキングのオーバーヘッドがない)。これはObjectQueryにのみ使え、DbSetやDbQueryクラスには使えない。
  • 高速なMicro-ORMスタイルの、DatabaseのSqlQueryExecuteStoreQuery
  • 設計時の配慮 – TPH (Table-per-hierarchy) 対 TPT (Table-per-Type) 対 TPC (Table-per-Class)。結果得られるクエリの複雑さとパフォーマンスの観点からはTPTが最悪だ。
  • Lazy 対 Eager ローディング

Entity FrameworkはMicrosoftが無償提供している.NETアプリケーション向けの商用ORMだ。.NET開発者向けにはEF以外にも、(オープンソース、商用含め)NHibernateLightSpeedのような成熟した製品、Dapper.NET, PetaPocoMassiveのような軽量なMicro-ORMが利用可能だ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT