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 に答える