實體框架性能
回答
幾個方面來看看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. 實體框架性能緩慢
- 3. 實體框架包括性能
- 4. 實體框架查詢性能
- 5. 實體框架,性能調優
- 6. 實體框架 - 在導航性能
- 7. 實體框架.INCLUDE性能問題
- 8. 實體框架協會查殺性能
- 9. 實體框架刪除性能
- 10. 實體框架協會性能
- 11. 性能分析ADO.NET和實體框架
- 12. ASP.NET MVC,實體框架和性能
- 13. 實體框架的SQL查詢性能
- 14. Linq To Sql vs實體框架性能
- 15. 實體框架6和異步()性能
- 16. SqlBulkCopy之後的實體框架性能
- 17. SQL性能優化(實體框架)
- 18. 實體框架查詢和性能
- 19. 性能問題:實體框架
- 20. ADO.NET實體框架模型性能
- 21. 覆蓋實體框架實體屬性
- 22. 實體框架多態性
- 23. 實體未能與實體框架
- 24. 實體框架+ Unity框架
- 25. 實體框架搜索實體屬性和實體ICollection
- 26. 實體框架
- 27. 實體框架
- 28. 實體框架
- 29. 實體框架
- 30. 實體框架實體json
你是否分析過並確定它是因爲實體框架還是由於查詢本身而變得緩慢? – 2009-12-04 05:15:00
@克里斯:不,我沒有。你能拋出一些指針嗎? – pencilslate 2009-12-04 05:28:27