BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Entity Framework 5 - パフォーマンスの考慮事項

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

原文(投稿日: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が利用可能だ。

この記事に星をつける

おすすめ度
スタイル

BT