tpl parallel example asparallel c# .net linq .net-4.0 plinq

c# - parallel - ¿está bien usar plinq ForAll para una inserción masiva en la base de datos?



plinq example (2)

No.

Éste puede ser más rápido, ya que aprovecha el paralelismo en el SQL, pero al final el SQL tiene que hacer un bloqueo para la tabla (página), ya que hace una inserción. por lo tanto, cada solicitud paralela se ejecuta después de otra de nuevo.

Si desea hacer una inserción masiva, haga que un SP acepte todas las entradas (por ejemplo, una tabla con SQL 2008.) o hágalo con Linq2SQL.

esa sería la solución de diseño correcta.

Estoy haciendo esto:

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

es esto bueno, ¿voy a tener más rendimiento con esto?


Probablemente no. Cada inserción se llevaría a cabo en un hilo separado, mientras que la inserción masiva funcionaría bien transfiriendo grandes cantidades de datos de un único hilo, a la vez.

PD: SqlBulkCopy funcionaría mucho, mucho mejor que una inserción paralela. Úselo si es posible.