EF效能最佳化,ef效能

來源:互聯網
上載者:User

EF效能最佳化,ef效能
情況介紹

在項目中,我用EF儲存2W條資料時,花費竟然1小時20分鐘左右,然後我只能搜腸刮肚想法最佳化……

測試草圖

測試草圖,僅供借鑒看,下面我會詳細總結。

最佳化方法總結1.串連保持暢通

意思是不要在需要的時候串連了不需要的時候斷開,需要了又去串連(特殊情況除外),目的在於減少對資料庫的操作。

2.關閉EF的一些配置

EF使用時,會在Config中配置,對於使用CRUD功能,有一些是用不到的,可以關閉,關閉後的測試效果加快幾秒,略微提升。

3.存入List

EF支援AddRange,如果需要存5條資料,將這5條資料放入list一次存入,要比一條一條的存大大的快。

4.尋找資料用Linq or Lamba

遇到這樣的情況,你需要從資料庫中取某一條特定的資料,然後處理這條資料後存入另一個表,用foreach是吧,太慢了,換成Linq,上面草圖中有個備忘,再換成lamba試試。

5.資料放入記憶體

如果要從一個表中多次找資料來使用,那不如第一步先將這個表中所有資料或者需要的那部分特徵資料都先放入記憶體中,從記憶體中讀取的速度,大大的快於操作資料庫,而這目的,也就是減少操作資料庫的次數,耗效能。

6.使用BulkInsert

使用外掛程式Extended,使用其中的BulkSaveChanges代替EF原生態的SaveChanges來儲存資料,附來引用一段話:

然後我親測結果

1000條資料,BulkSaveChanges花費1s,SaveChanges花費27s……

外掛程式名:

對於該外掛程式的一些使用方法,我也附上網址:
http://www.zzzprojects.com/products/dotnet-development/bulk-operations/

7.使用SQL語句

如果你對速度還不滿意,可以CRUD,直接使用SQL語句來操作。
可以參考:
http://my.oschina.net/Yamazaki/blog/185621

8.多表只需存一張

遇到這樣的情況,P、T兩張表,關係是1—–(0,1)的關係,你可能會先存入P表的資料,然後foreach P表的資料,找到對應的給T表的導覽屬性賦值,然後存入這條資料到T表,這個問題很嚴重也可笑,但是我身上缺犯了,只需要存 必須存導航資料(T表資料),有關聯的表資料自然存入了(P表)

結尾

上述我總結的方法中,沒有使用SQL語句,原先花費1小時20分鐘的事,現在花費70s,竟然真的做到了。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關關鍵詞:
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.