使用Entity Framework 5的性能注意事項
雖然 Entity Framework (EF) 5 承諾帶來了超越 EF 4 的大幅性能提升,但為了更有效地使用 ORM,我們仍然需要關注一些注意事項——即視圖生成、緩存、自動編譯的查詢、查詢執行選項及設計時(Design Time)。
微軟已經發布了一份白皮書,概述使用待發布的 Entity Framework 5(它將作為即將到來的 .NET 4.5 的一部分發布)時應關注的各種性能注意事項。
以下是一些需要注意的地方:
- 冷查詢執行 vs. 暖查詢執行(Cold-vs-Warm query execution)——視圖生成這一步(用于從數據庫模式到概念模式或從概念模式到數據模式的必要轉換)會增加第一次運行查詢時的開銷,后續運行會因為視圖緩存的緣故會更快一些。用戶可以通過預生成視圖來提升性能;
- 緩存——在對象層次(特別是結合禁用 AutoDetectChanges 改善 DbContext Find ()性能),可用的緩存有查詢計劃緩存(Query Plan Caching)、元數據緩存(MetaData Caching)及結果緩存(Results Caching)。EF 仍然沒有提供二級緩存,不過我們可以參考一些指南進行實現——如 CodePlex 上的示例,以及 Julia Lerman 的文章“Entity Framework 與 Windows Azure 中的二級緩存”;
- 可選的無跟蹤查詢(沒有狀態跟蹤的開銷)。目前該選項只對 ObjectQuery 可用,沒法適用于 DbSet 及 DbQuery 類;
- 微型 ORM 風格的快速查詢,如數據庫上執行 SQL 查詢以及 ExecuteStoreQuery ;
- 設計時注意事項——每個層次對應一張表(Table-per-hierarchy,簡稱 TPH)vs. 每個類型對應一張表(Table-per-Type,簡稱 TPT)vs. 每個類對應一張表(Table-per-Class,簡稱 TPC);其中 TPT 在查詢復雜度及性能方面表現最差;
- 延遲加載 vs. 預先加載 (Lazy-vs-Eager loading)。
Entity Framework 是由微軟提供的一款面向 .NET 應用程序的商業對象關系映射框架。除了 EF 之外,.NET 開發人員還可以選擇的一些(開源和商業包括在內)產品有 NHibernate 和 LightSpeed。另外,還有一些輕量級的微型 ORM 模型像 Dapper.NET、PetaPoco 及 Massive。
查看英文原文:Entity Framework 5 - Performance ConsiderationsEntity Framework
來自:
InfoQ
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!