EF大批量插入数据的性能调优思路

在面临从XML数据批量写入数据库的需求时,最初使用EF+WinForm实现的程序性能较低,2W条数据需10分钟。通过分析发现并非多线程问题,而是数据保存环节。将DbContext操作改为直接执行SQL,性能提升约4倍,揭示了在大批量操作时避免使用重量级ORM如EF,推荐使用轻量级库如Dapper,以提高效率。
摘要由CSDN通过智能技术生成

最近碰到一个需求:需要从XML格式的文本中解析数据,并写入数据库表中。遇到这种情况自然是EF+WinForm开干,写完程序之后跑了一下,发现速度有点慢,因为数据急着要,所以就这么拿去用了。最后实际运行的速度大概是2W条数据10分钟左右。

后面仔细想了想,性能不应该这么低才对。首先想到会不会是多线程的问题,于是看了下资源监视器,所有核心都是在跑的。

(程序运行时的CPU占用)

然后在代码里加Stopwatch,分析代码运行时间发现解析(并写入)1000条数据的时间是25秒,并且程序运行到后面速度会越来越慢。

(每1000条数据执行时间,到最后时间翻了一倍多)

此时的主要代码如下,可以看到性能瓶颈无非就是XML解析和数据保存。但是加断点执行两次感觉XML解析没什么问题,于是打算从数据保存部分下刀,把DbContext改成直接执行SQL。

                foreach(XmlNode p in nodes)
                {
                    JTCY j = new JTC
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值