日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题

發(fā)布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一. 綜述

  該模塊主要介紹:EF的性能優(yōu)化插件Z.EntityFramework.Extensions,該插件收費

(一). 簡介

1. 相關(guān)網(wǎng)站:http://www.zzzprojects.com/

2. 下載途徑:通過Nuget直接下載或者去官網(wǎng)下載(要注意更新最新版本,可能會過期)

3. 該程序集包括三個核心模塊:Bulk SaveChanges、Bulk Operations、Batch Operations

(二).Bulk SaveChanges 大批量保存

1. 核心方法:BulkSaveChanges

2. 該方法是在EF原有方法SaveChanges方法上的一個提升。

3. 使用方法:增刪改操作均使用EF自有的方式,最后事務(wù)性提交數(shù)據(jù)庫,BulkSaveChanges代替SaveChanges

4. 工作原理:與SaveChanges類似,但是減少了與數(shù)據(jù)庫的往返次數(shù),從而提高了性能

5. 性能測試:以增加數(shù)據(jù)為例進行測試:

1000條    5000條    10000條

1.606s    6.542s    ? 21.857s

6. 可配置參數(shù) (改變這兩個參數(shù)對性能影響不大)

①.BatchSize 批量提交塊的大小

②.AllowConcurrency 是否允許并發(fā)檢查

(三). Bulk Operations

1. 核心方法:BulkInsert(增加)、BulkDelete(刪除)、BulkUpdate(修改)、BulkMerge(合并)、BulkSynchronize(同步)

其中:BulkMerge(合并)、BulkSynchronize(同步)不常用,這里不單獨測試了。 (根據(jù)傳入的類型可以直接找到對應(yīng)的表進行操作)

2. 工作原理:盡可能的減少與數(shù)據(jù)庫的往返次數(shù),

3. 性能測試:BulkInsert性能進行測試:

  1000條    5000條    10000條    40000條

  1.432s    1.568s   ? ?1.554s    1.899s

4. 性能測試:BulkDelete性能進行測試:

  1000條    5000條    10000條    40000條

  1.430s    1.542s   ? ? 1.540s    ? 2.597s

5. 可配置參數(shù) (改變這兩個參數(shù)對性能影響不大)

①.BatchSize 批量提交塊的大小

②.AllowConcurrency 是否允許并發(fā)檢查

(四). Batch Operations (批量進行統(tǒng)一操作)

1. 核心方法:DeleteFromQuery、UpdateFromQuery

2. 使用方法:

①. context.Customers.Where(x => x.ID == userId).DeleteFromQuery();

②. context.Customers.Where(x => x.ID == userId).UpdateFromQuery(x => new Customer {Actif = false});

3. 性能測試: DeleteFromQuery的性能測試

  1000條    5000條    10000條    40000條

  0.1s     ?0.127s   0.156s    ?? ? 0.490s

4. 性能測試: UpdateFromQuery的性能測試

  1000條    5000條    10000條    40000條

  0.120s    0.131s    ?? 0.172s    ??0.437s

二. 代碼實戰(zhàn)

1.?1.以增加數(shù)據(jù)為例,進行測試BulkSaveChanges(測試數(shù)據(jù)條數(shù):1000,5000,10000)

1 private static void NewMethod1(DbContext db, int count)2 {3 Console.WriteLine("-------------1. 提供BulkSaveChanges方法來替代EF本身的Savechanges------------------");4 Stopwatch watch = Stopwatch.StartNew();5 for (int i = 0; i < count; i++)6 {7 TestTwo t = new TestTwo();8 t.id = Guid.NewGuid().ToString("N");9 t.t21 = "t1+" + i; 10 t.t22 = "t2+" + i; 11 db.Set<TestTwo>().Add(t); 12 } 13 14 db.BulkSaveChanges(); 15 16 //db.BulkSaveChanges(options => 17 //{ 18 // options.BatchSize = 1000; 19 // options.AllowConcurrency = false; 20 //}); 21 watch.Stop(); 22 Console.WriteLine("{0}條數(shù)據(jù)耗時:{1}", count, watch.ElapsedMilliseconds); 23 }

2.?以增加為例,測試BulkInsert方法(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)

1 private static void NewMethod2(DbContext db, int count)2 {3 Console.WriteLine("-------------1. 以增加為例,測試BulkInsert方法(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)------------------");4 Stopwatch watch = Stopwatch.StartNew();5 List<TestTwo> list = new List<TestTwo>();6 for (int i = 0; i < count; i++)7 {8 TestTwo t = new TestTwo();9 t.id = Guid.NewGuid().ToString("N"); 10 t.t21 = "t1+" + i; 11 t.t22 = "t2+" + i; 12 list.Add(t); 13 } 14 15 db.BulkInsert(list); 16 17 //db.BulkInsert(list, p => 18 //{ 19 // p.BatchSize = 100; 20 // p.AllowConcurrency = false; 21 //}); 22 watch.Stop(); 23 Console.WriteLine("{0}條數(shù)據(jù)耗時:{1}", count, watch.ElapsedMilliseconds); 24 }

3.?以刪除為例,測試BulkDelete方法(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)

1 private static void NewMethod3(DbContext db, int count) 2 { 3 Console.WriteLine("-------------2. 以刪除為例,測試BulkDelete方法(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)------------------"); 4 Stopwatch watch = Stopwatch.StartNew(); 5 List<TestTwo> list = db.Set<TestTwo>().Take(count).ToList(); 6 db.BulkDelete(list); 7 watch.Stop(); 8 Console.WriteLine("{0}條數(shù)據(jù)耗時:{1}", count, watch.ElapsedMilliseconds); 9 }

4.?DeleteFromQuery的性能測試(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)

1   private static void NewMethod4(DbContext db, int count) 2 { 3 Console.WriteLine("-------------1. DeleteFromQuery的性能測試(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)------------------"); 4 Stopwatch watch = Stopwatch.StartNew(); 5 db.Set<TestTwo>().Where(u=>u.id!="fk").DeleteFromQuery(); 6 7 watch.Stop(); 8 Console.WriteLine("{0}條數(shù)據(jù)耗時:{1}", count, watch.ElapsedMilliseconds); 9 }

5.?UpdateFromQuery的性能測試(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)

1 private static void NewMethod5(DbContext db, int count)2 {3 Console.WriteLine("-------------2. UpdateFromQuery的性能測試(測試數(shù)據(jù)條數(shù):1000,5000,1w,4w)------------------");4 Stopwatch watch = Stopwatch.StartNew();5 db.Set<TestTwo>().Where(u => u.id != "fk").UpdateFromQuery(x => new TestTwo { 6 t21="1",7 t22="2"8 });9 10 watch.Stop(); 11 Console.WriteLine("{0}條數(shù)據(jù)耗時:{1}", count, watch.ElapsedMilliseconds); 12 }

總結(jié)

以上是生活随笔為你收集整理的第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产15页| www.999热| 亚洲av成人精品毛片 | 色婷婷97 | 亚洲第八页 | 日韩精品在线电影 | 国产精品久久777777换脸 | 米奇色| 三级黄色片网站 | 日韩成人三级 | 欧美成人精品一区二区男人小说 | 另类综合网 | 午夜黄视频 | 韩国一区二区三区视频 | 91麻豆国产在线 | 国产在线观看成人 | 国产熟女精品视频 | 精品国产乱码久久久久久影片 | 日本顶级大片 | 蜜乳av懂色av粉嫩av | 日韩欧美国产综合 | 久久久久久久久久99精品 | 国产精品久久一区二区三区动 | 影音先锋中文字幕资源 | 中文乱码人妻一区二区三区视频 | 粉嫩欧美一区二区三区 | 麻豆性生活 | 欧美人与性禽动交精品 | 色婷婷综合五月 | 免费毛片网站在线观看 | 国产成人精品无码免费看在线 | 91高清免费视频 | 成人交配视频 | 亚洲最大成人在线视频 | 国产精品久久777777 | 97黄色片| 性户外野战hd | 永久av在线免费观看 | 免费在线一级片 | 永久免费网站直接看 | 男男大尺度 | 久久久视 | 一本色道久久综合亚洲精品酒店 | 国产伦理片在线观看 | 久草资源 | 住在隔壁的她动漫免费观看全集下载 | 好妞色妞国产在线视频 | 国产综合日韩 | 久久一区视频 | 精品一区二区三区四区视频 | 日本一区二区三区久久久久 | 体感预报日剧 | 我要看18毛片 | 超碰在线观看av | 欧美丰满bbw| 欧美中文字幕一区二区 | 日韩视频在线观看一区二区三区 | 国产精品宾馆在线精品酒店 | 久久精品欧美日韩 | 国产成人精品一区二区三区 | 国产精品永久在线观看 | 亚洲成人精品久久久 | 狠狠干网 | 久久久久麻豆v国产精华液好用吗 | 对白超刺激精彩粗话av | 蘑菇福利视频一区播放 | 一级性视频 | 国产精品婷婷午夜在线观看 | 亚洲欧美视频二区 | 999久久久久久 | 欧美一级不卡视频 | 国产亚洲av综合人人澡精品 | 国产精品爽爽 | 亚洲国产视频一区 | 神马九九| 中文字幕无码精品亚洲 | 天天干天天综合 | 久久久久久免费观看 | www.色综合 | 中文字幕视频观看 | 九九香蕉视频 | 欧美色就是色 | 日本少妇久久 | 中文字幕乱码中文乱码777 | 99热超碰在线 | 国模福利视频 | 久久久精品视频免费 | 综合爱爱网 | 小明成人免费视频 | 波多野结衣先锋影音 | 少妇一级淫片免费 | 欧美久草 | 在线观看黄色大片 | 国产乱强伦一区二区三区 | 福利社区一区二区 | 亚洲经典一区二区三区四区 | 免费在线看黄视频 | 免费黄片毛片 | 欧美激情视频一区 |