我这样做:
entities.AsParallel().ForAll(o => repository.Insert(o));
这很好,我会有更多表现吗?
答案 0 :(得分:4)
没有
这个可以更快,因为它利用了对SQL的并行性,但最终SQL必须对表(页面)进行锁定,因为它会进行插入。 因此,每个并列请求再次执行。
如果要进行批量插入,请使SP接受所有条目(例如,带有SQL 2008的表)。或者使用Linq2SQL进行。
这将是正确的设计解决方案。
答案 1 :(得分:4)
可能不是。每个插入实际上都是在一个单独的线程上进行的,而批量插入只需一次从单个线程传输大量数据就可以正常工作。
PS:SqlBulkCopy可以比并行插入更好,更好。如果可能,请使用它。