C#并行。用于执行SQLCommands

C#并行。用于执行SQLCommands,c#,sql-server,parallel-processing,parallel.for,C#,Sql Server,Parallel Processing,Parallel.for,我想提高控制台应用程序的性能,该应用程序接收一个包含数百万行的文本文件,当前将每行一次插入到SQL表中 使用Parallel.For,我想对此进行改进,因为每个操作都独立于下一个操作。由于每次迭代都执行一个SQLCommand,我想知道这是否是一种安全的方法。我不确定这在内部是如何工作的,我不想在数据库上引起性能问题。例如,如果Parallel.For为sql server创建了太多无法处理的任务,那么数据库是否会冻结或崩溃?这就是For。应该足够安全,但正如@Crowcoder所提到的,这是S

我想提高控制台应用程序的性能,该应用程序接收一个包含数百万行的文本文件,当前将每行一次插入到SQL表中


使用Parallel.For,我想对此进行改进,因为每个操作都独立于下一个操作。由于每次迭代都执行一个SQLCommand,我想知道这是否是一种安全的方法。我不确定这在内部是如何工作的,我不想在数据库上引起性能问题。例如,如果Parallel.For为sql server创建了太多无法处理的任务,那么数据库是否会冻结或崩溃?

这就是For。应该足够安全,但正如@Crowcoder所提到的,这是SqlBulkCopy的完美案例。您需要一个sql用户定义的表类型作为参数,但它工作得很好。我同意SqlBulkCopy。它将执行逐行插入。数百万行的逐行插入将导致大量网络流量。你只需要对它们进行批处理,这样就不会耗尽内存。。。您必须试验批处理的大小,但5000通常是我开始的位置,并根据需要上下移动。是否可以使用bcp?
并行。For
在CPU使用量很大的情况下非常有用。在数据库中插入行不会占用大量CPU。这就是它的用途。这样做应该足够安全,但正如@Crowcoder所提到的,这是SqlBulkCopy的完美例子。您需要一个sql用户定义的表类型作为参数,但它工作得很好。我同意SqlBulkCopy。它将执行逐行插入。数百万行的逐行插入将导致大量网络流量。你只需要对它们进行批处理,这样就不会耗尽内存。。。您必须试验批处理的大小,但5000通常是我开始的位置,并根据需要上下移动。是否可以使用bcp?
并行。For
在CPU使用量很大的情况下非常有用。在数据库中插入行不会占用大量CPU。