5

我正在这样做:

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

这很好吗,我会有更多的表现吗?

4

2 回答 2

4

不。

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

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

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

于 2010-07-20T13:27:15.047 回答
4

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

PS:SqlBulkCopy 会比并行插入好得多。如果可能,请使用它。

于 2010-07-20T13:28:17.370 回答