【问题标题】:is it ok to use plinq ForAll for a bulk insert into database?可以使用 plinq ForAll 批量插入数据库吗?
【发布时间】:2010-07-20 13:22:21
【问题描述】:

我是这样做的:

 entities.AsParallel().ForAll(o => repository.Insert(o));

这样好吗,我会用这个有更多的表现吗?

【问题讨论】:

    标签: c# .net linq .net-4.0 plinq


    【解决方案1】:

    没有。

    这个可以更快,因为它利用了 SQL 的并行性,但最终 SQL 必须为表(页)锁定,因为它会插入。 因此每个并行请求都会一个接一个地执行。

    如果您想进行批量插入,那么请让 SP 接受所有条目(例如,使用 SQL 2008 的表。)或使用 Linq2SQL 进行。

    这将是正确的设计解决方案。

    【讨论】:

      【解决方案2】:

      可能不会。每次插入实际上都会在单独的线程上进行,而批量插入可以通过从单个线程一次传输大量数据来很好地工作。

      PS:SqlBulkCopy 会比并行插入好得多。尽可能使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-29
        • 2011-07-18
        • 2011-01-14
        • 1970-01-01
        • 2014-11-03
        • 1970-01-01
        相关资源
        最近更新 更多