实体框架性能
回答
几个方面来看看EF的性能
- 打电话之类的东西tolist之前做尽可能多的处理()。 ToList将把集合中的所有内容放入内存中。默认情况下,EF将继续构建表达式树,并只在需要内存中的数据时才实际处理它。第一个查询将针对数据库,但之后的处理将在内存中。处理大量数据时,您绝对需要尽可能多地完成数据库的繁重工作。
- EF 1只能将整行拖回。因此,如果你有一个字符串是一个大的字符串或二进制blob,它将被拉下来,无论你是否需要它。您可以创建一个不包含此列的投影,但是您没有获得将它作为实体的好处。
- 你可以看一下使用建议在这个岗位 How do I view the SQL generated by the Entity Framework?
相同的物理定律适用于EF查询和普通SQL。检查你的数据库表,并确保你有主键和外键的索引,你的数据库已经正确的标准化,等等。如果微软的建议后性能下降,那么这是我对问题领域的猜测。
使用SQL事件探查器检查执行多少个查询来检索您的数据。如果数量很大,则使用Include()
方法ObjectQuery
在一个查询中检索具有父级的子对象。
你托管在IIS web服务由EF生成的SQL?它是否与Silverlight应用程序在同一个网站上运行?数据库本身呢?它是否在专用机器上运行?有其他应用程序击中它吗?第一次打电话到休眠数据库是痛苦的(我曾经有过在我的环境中实际超时的情况。)
这里有很多因素需要考虑。但它不仅仅是EF的开销。
编辑我没有完全符合条件,但无论您的数据访问解决方案如何,打开与SQL Server的第一个连接的过程都很慢。
@Mike:我目前正在同一台机器上运行SQL Server的测试平台IIS环境。大约需要2分钟才能完成EF中执行的ToList方法。你会建议我看看还有哪些其他的指针? – pencilslate 2009-12-04 06:10:22
我会说这是一个非问题。然而,一条路线是使用自托管的WCF服务,并在启动过程中将该服务调用为一个简单例程,以便在进行客户端调用之前,它已与SQL Server建立通信。 这里主要的问题是你在同一台机器上测试。如果您在生产机器上发现问题,那么可能值得解决。但有办法缓解它。 – 2009-12-04 14:08:49
- 1. 性能的实体框架
- 2. 性能分析ADO.NET和实体框架
- 3. 实体框架协会性能
- 4. 实体框架4.1性能问题
- 5. 实体框架.INCLUDE性能问题
- 6. 实体框架6.0的性能问题
- 7. 实体框架性能VS传统ADO.Net
- 8. ADO.NET实体框架模型性能
- 9. 实体框架vs NHibernate - 性能
- 10. 实体框架 - 在导航性能
- 11. Linq To Sql vs实体框架性能
- 12. 实体框架总和()的性能
- 13. 实体框架查询和性能
- 14. 性能问题:实体框架
- 15. 实体框架删除性能
- 16. 实体框架协会查杀性能
- 17. 实体框架 - 填充其余性能
- 18. 实体框架性能问题
- 19. SQL性能优化(实体框架)
- 20. 实体框架6和异步()性能
- 21. 实体框架,性能调优
- 22. ASP.NET MVC,实体框架和性能
- 23. 实体框架包括性能
- 24. 实体框架查询性能
- 25. 实体框架插入性能
- 26. 实体框架性能缓慢
- 27. 实体框架性能调优
- 28. 实体框架的SQL查询性能
- 29. SqlBulkCopy之后的实体框架性能
- 30. 实体框架4.1 DatabaseGeneratedOption.Identity性能
你是否分析过并确定它是因为实体框架还是由于查询本身而变得缓慢? – 2009-12-04 05:15:00
@克里斯:不,我没有。你能抛出一些指针吗? – pencilslate 2009-12-04 05:28:27