SqlBulkCopy を実装してパフォーマンス テストを行う前に、いつ使用すべきか、比較的小さなデータ セット (1000 行程度) でも使用することが望ましいかどうかについて、誰かがガイダンスを持っているかどうか疑問に思っていました。この状況で使用するとオーバーヘッドがありますか、それとも妥当な数の行を挿入するときに常に使用する必要がありますか?
2 に答える
私はおそらく1000行にそれを使用しますが、コマンドバッチ処理で同様のことを行うことができます。
1000行の場合、最も簡単なアプローチは、必要なデータをDataTable
正しい形状にスローすることです。これは非常に簡単です。より大きなセットの場合、IDataReader
(最初にすべてのレコードをメモリにバッファリングするのではなく、レコードをストリーミングするために)特注を作成することが私の好ましいオプションです。
注目すべきもう1つの点は、トランザクション、耐久性などです。使用するときは、これを使用してステージングSqlBulkCopy
テーブルにプッシュし、次にsproc(または単純なTSQLコマンド)を呼び出してデータを実際のテーブルにプッシュする傾向があります。これにより、単一のセットベース(および完全にログに記録された)を除いて、実際のテーブルがクリーンに保たれます。INSERT
ただし、パフォーマンスを測定したいだけの場合は、実際のテーブルにそれを投げて、球場の見積もりを取得する必要があります。
SqlBulkCopy はトランザクション ログに書き込まないため、各行を手動で挿入するよりも高速です。
1000 行の場合でも、特に Web アプリケーションなどのアクセス頻度の高い操作の場合は、速度が向上するはずです。