SqlBulkCopyを実装してパフォーマンスをテストする前に、いつ使用するべきか、比較的小さなデータセット(1000行程度)でも使用することをお勧めしますか?この状況でそれを使用する上でオーバーヘッドはありますか、それとも、妥当な数の行を挿入するときに私はいつも使用するべきですか?
私はおそらく1000行のためにそれを使用していますが、コマンド・バッチ処理と似た何かを行うことができます。
1000行の場合、最も簡単な方法は、必要なデータを適切な形状のDataTable
にスローすることです。これはかなり簡単です。大きなセットの場合は、 IDataReader
(メモリを最初にすべてバッファリングするのではなく、レコードをストリーミングするため)を書いてください。
もう一つは、トランザクション、耐久性などです。 SqlBulkCopy
を使用する場合は、これを使用してステージングテーブルにプッシュし、実際のテーブルにデータをプッシュするためにsproc(または単純なTSQLコマンド)を呼び出します。これは、単一のセットベースの(そして完全にログに記録された) INSERT
を除いて、 実際のテーブルをきれいに保ちます。
しかし、パフォーマンスを測定したいだけの場合は、実際のテーブルに投げて球場の推定値を取得する必要があります。
SqlBulkCopyはトランザクションログに書き込まないため、各行を手動で挿入するよりも高速になります。
1000行であっても、特にWebアプリケーションなどからアクセスが多い場合は、速度が向上するはずです。