質問: 1800; if (matchingColumns != null || matchingColumns.Count > 0) foreach (KeyValuePair kv in matchingColumns) bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(kv.Key, kv.Value)); bulkCopy.WriteToServer(dt); } ``` バッチサイズを使用しなかった場合、プロセスは7分で完了しました。その後、バッチサイズを100,000に設定し、時間は約5:30に設定して、それを50,000に設定し、時間を10分に増やしました。 バッチサイズがINSERTの速度に与える影響を知りたい。それは、一般的に物事をより速くするか遅くするか?
回答: バッチサイズを広範囲にテストするこのホワイトペーパーをご覧ください。 SQLBulkCopyPerformance さまざまなバッチサイズを使用して、ネットワーク利用などに関してそこに多くのデータがありますが、結論は次のとおりです: > Books OnLineに記載されているものは見つかりませんでしたが、私たちの経験の中で面白いことは何も見たことがありませんでした。これは、BatchSizeで行うべき最良のことは、デフォルト値であるゼロそれとは異なるロードプロセスのパフォーマンスが低下します > > あなたのテストに同意したようです。 編集: 以前はSqlBulkCopyを使用していたときは、複数の挿入を行い、次にNotifyAfterプロパティとSqlRowsCopiedイベントを使用してバッチサイズを自分自身で制御して、コピーが進行するにつれて進行状況の更新を取得する傾向がありました。