2012-03-26 41 views
1

我的網站有幾個性能問題。 我使用的是asp.net mvc 2和Entity Framework 4.0。我購買了一個Entity Framework Profiler來查看EF生成的SQL請求類型。

EF預生成視圖。如何確定這些視圖正在使用EF

例如,某些頁面需要3到5秒才能打開。這對我的客戶非常重要。
要查看EF生成的SQL是否存在性能問題,我使用我的分析器並在Sql Management Studio中複製/粘貼生成的SQL來查看執行計劃和SQL統計信息。結果顯示不到一秒鐘。

現在我刪除了SQL查詢,我懷疑EF在構建查詢步驟。
我按照msdn的步驟預先生成我的視圖。我沒有看到任何性能增益。

如何確保我的查詢使用這些預生成視圖?
有什麼我可以做的,以提高我的網站的性能?

感謝

回答

1

首先,請記住,預編譯的查詢仍然需要一樣長(實際上稍長),它們運行的​​第一次,因爲查詢被編譯第一次他們被調用。在第一次調用之後,您應該看到單個查詢的性能顯着提高。

但是,您會發現所有性能問題的最佳答案是:找出最先花費的時間,然後努力改進該領域。在你運行一個探查器並知道你的系統被阻塞之前,任何時候你花費在嘗試加快速度都可能被浪費。

一旦你已經確定什麼是最耗時,有很多可能的技術用來提高辦事效率:

    不改變往往
  1. 重組你的數據訪問
  2. 緩存數據所以你可以在更少的往返行程中獲取所需的數據。
  3. 確保您在執行數據庫查詢時不會佔用比您需要的更多數據。
  4. 購買更好的硬件。
  5. ...等等

最後一個音符:在實體框架5,他們計劃實現自動查詢緩存,這將使預編譯的查詢實際上是無用的。所以我只建議在你知道的地方進行,肯定你會得到顯着的改善。