写点什么

使用 Entity Framework 5 的性能注意事项

  • 2012-04-30
  • 本文字数:847 字

    阅读完需:约 3 分钟

虽然 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 Considerations Entity Framework

2012-04-30 20:313149
用户头像

发布了 125 篇内容, 共 38.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

使用Zabbix监控TiDB(一)

TiDB 社区干货传送门

实践案例

TiDB 监控架构解读

TiDB 社区干货传送门

监控

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

TiDB 赋权问题

TiDB 社区干货传送门

故障排查/诊断

Tidb灾难恢复演练-多副本丢失

TiDB 社区干货传送门

故障排查/诊断

微众银行数据库架构演进及 TiDB 实践经验

TiDB 社区干货传送门

实践案例

DELETE Statement,懂你不容易

TiDB 社区干货传送门

TiDB 底层架构

【TiDB 4.0 新特性系列】BR 特性及原理解读

TiDB 社区干货传送门

pd集群多副本数据丢失以及修复实践

TiDB 社区干货传送门

实践案例

从使用者到开发者,知乎参与 TiDB 社区背后的故事

TiDB 社区干货传送门

实践案例 数据库架构选型

把云数据库服务变成黑盒子:ServerlessDB for HTAP丨Hacking Camp 进行时

TiDB 社区干货传送门

实践案例

TiDB Coprocessor 学习笔记

TiDB 社区干货传送门

TiDB 底层架构

TiDB HTAP 深度解读

TiDB 社区干货传送门

Placement Rules 原理

TiDB 社区干货传送门

TiDB 底层架构

PD 关于tso 分配源代码分析

TiDB 社区干货传送门

TiDB 底层架构

一个联合索引使用问题以及优化方案

TiDB 社区干货传送门

管理与运维 故障排查/诊断

小红书数据架构及 TiDB 使用场景

TiDB 社区干货传送门

TiFlink: 使用 TiKV 和 Flink 实现强一致的物化视图

TiDB 社区干货传送门

实践案例 TiDB 底层架构

国产主流数据库调研

TiDB 社区干货传送门

性能调优 实践案例

TiDB run and debug on M1

TiDB 社区干货传送门

实践案例 安装 & 部署

Flink 最佳实践之 通过 TiCDC 将 TiDB 数据流入 Flink

TiDB 社区干货传送门

性能调优

TiDB AutoCommit OFF 问题

TiDB 社区干货传送门

实践案例 故障排查/诊断 新版本/特性发布

不定期更新,记录一些小知识

TiDB 社区干货传送门

监控 版本升级 安装 & 部署

TiDB大规模删除实践

TiDB 社区干货传送门

管理与运维

【TiDB 最佳实践系列】PD 调度策略最佳实践

TiDB 社区干货传送门

实践案例

PD api基础框架源码分析

TiDB 社区干货传送门

TiDB 底层架构

伴鱼数据库之SQL审核系统

TiDB 社区干货传送门

TiDB GC 之原理浅析

TiDB 社区干货传送门

TiDB 底层架构

一次 meet_lock 告警异常处理过程

TiDB 社区干货传送门

实践案例 故障排查/诊断

伴鱼数据库之监控系统

TiDB 社区干货传送门

TiDB 记录日志原理解读

TiDB 社区干货传送门

TiDB 底层架构

使用Entity Framework 5的性能注意事项_.NET_Roopesh Shenoy_InfoQ精选文章