【发布时间】:2010-07-20 13:22:21
【问题描述】:
我是这样做的:
entities.AsParallel().ForAll(o => repository.Insert(o));
这样好吗,我会用这个有更多的表现吗?
【问题讨论】:
标签: c# .net linq .net-4.0 plinq
我是这样做的:
entities.AsParallel().ForAll(o => repository.Insert(o));
这样好吗,我会用这个有更多的表现吗?
【问题讨论】:
标签: c# .net linq .net-4.0 plinq
没有。
这个可以更快,因为它利用了 SQL 的并行性,但最终 SQL 必须为表(页)锁定,因为它会插入。 因此每个并行请求都会一个接一个地执行。
如果您想进行批量插入,那么请让 SP 接受所有条目(例如,使用 SQL 2008 的表。)或使用 Linq2SQL 进行。
这将是正确的设计解决方案。
【讨论】:
可能不会。每次插入实际上都会在单独的线程上进行,而批量插入可以通过从单个线程一次传输大量数据来很好地工作。
PS:SqlBulkCopy 会比并行插入好得多。尽可能使用它。
【讨论】: