bulkinsert_oracle bulk insert_bulk insert导入excel(2)

电脑杂谈  发布时间:2017-03-01 00:03:30  来源:网络整理

好了现在运行,等待中……

哎~~实在是没有耐心等待它运行完。

怎么办,减少数据量,先添加1000条:

还好,用时6157毫秒,6.157秒;

接着走,把数据量改为10000条:

运行完了,共117096毫秒,117.096秒,将近两分钟。bulkinsert实在是没有耐心再测100000条的了,接下来直接测批量添加的方法。

将上面的添加到中的代码换成下面的代码:

dbcontext.BulkInsert(customers);

dbcontext.BulkSaveChanges();

直接上10W条:

运行完了,共3592毫秒,3.592秒,真快啊~~

那么20W呢?

20W条数据运行完,才花了6346毫秒,6.346秒的时间。比上面的方法添加1000条的数据用的时间差不多,看来EF自带的添加方法慢,是毋庸置疑的了。

为什么扩展方法用的时间这么少?

EF自带的方法,会增加与的交互次数,一般地,EF的一个上下文在提交时会打开一个数据连接,然后把转换成的SQL语句一条一条的发到端,然后去提交,下面的图片是我用SQL Server Profiler记录的和交互的操作,这只是一小部分,试想,如果你的数据量达到万级别(更不用说百万,千万数据了),那对的压力是很大的

而扩展方法运行时与的交互是这样的:

批量添加的方法是生成一条SQL语句,和只交互一次。那为什么图片中有多条Insert语句呢,当你使用BulkInsert时,如果数据达到4万之前,那在SQL的解释时,也是很有压力的,有多情况下会超时,当然这与你的服务器有关,但为了性能与安全,将Bulk操作变为分批提交,即将上W的数据进行分解,分用1W数据量提交一次,这样,对的压力就小一些。

源代码下载:EF扩展方法BulkInsert(批量添加)

参考博客链接

EF架构~数据分批批量提交

EntityFramework 中支持 BulkInsert 扩展

批量操作可显著提升Entity Framework的性能

.NET Entity Framework Extensions


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35086-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...