使用 LINQ to entities 時,應該注意下面幾件事。
避免 ORM 的弱點
- Bulk Loads:大量載入太多資料
- 大量的更新:為了追蹤 entity 的狀態,會秏損效能及記憶體
- 回傳大量entity 的查詢
- 長時間的 ObjectContext
以上是 ORM 工具共通的毛病,如 LINQ to SQL, NHibernate。
因此,資料匯出入就不適合使用 LINQ to Entities ,除非是一筆一筆地處理。
增加效能
- 改善查詢語法
- 由 identity 欄位查詢單一 entity
- 使用eager loading 及使用 Include 一次取得資料
- 只讀取資料時,關閉物件的 tracking
- 資料庫,考慮使用 snapshot isolation
結論
LINQ 使用了 delegate 來改善查詢語法,增加可讀性及生產力。但也因為這個原因,會讓效能變差。因此,在開發的策略必須:讓系統能運作,然後讓它變快。
沒有留言:
張貼留言