.NET5必备工具——EF大数据批量处理----Bulk系列
Posted webmote
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET5必备工具——EF大数据批量处理----Bulk系列相关的知识,希望对你有一定的参考价值。
之前做项目的时候,如果在大批量操作数据时,性能不好.因为在框架中使用了EntityFramework,于是就搜索到某著名插件,Z系列。
1.安装
然后在类里面添加引用之后,使用DbContext就可以直接点出来。
2.博客园有人做过对比试验
我们直接拿数据说话吧.
- EF传统做法: 1000条插入,6秒,10000条,117秒,100000条,> 2分钟,已经没耐心了.
- 使用插件: 10W条,3.59秒;20W条:6秒时间
快了大约20倍不止.
3.快的原理
一句话:整合和数据库的交互
-
EF自带的方法,会增加与数据库的交互次数,一般地,EF的一个上下文在提交时会打开一个数据连接,然后把转换成的SQL语句一条一条的发到数据库端,然后去提交,下面的图片是我用SQL Server Profiler记录的和数据库交互的操作,这只是一小部分,试想,如果你的数据量达到万级别(更不用说百万,千万数据了),那对数据库的压力是很大的
-
批量添加的方法是生成一条SQL语句,和数据库只交互一次。那为什么图片中有多条Insert语句呢,当你使用BulkInsert时,如果数据达到4万之前,那在SQL的解释时,也是很有压力的,有多情况下会超时,当然这与你的数据库服务器有关,但为了性能与安全,将Bulk操作变为分批提交,即将上W的数据进行分解,分用1W数据量提交一次,这样,对数据库的压力就小一些。
4.关于插件授权
插件本身是免费的! 但不要高兴太早,当你下载插件后,仅可使用1个月,1个月后会弹出授权过期的提示,无法使用.
你需要再次下载插件,又可以用一个月了. 这意味着你不可以用在商业软件内.
因此,我特意为大家准备了长期版的下载,感兴趣的朋友到我的下载里拿吧.
最新版5.130,支持.net5 .net core EF5
以上是关于.NET5必备工具——EF大数据批量处理----Bulk系列的主要内容,如果未能解决你的问题,请参考以下文章