質問: SQL Azureに挿入する必要がある多数のレコード(約2000件)が発生する従業員セグメンテーションタスクがいくつかあります。レコードそのものは、4つの整数について非常に小さいです。 Azureワーカーロールはセグメンテーションタスクを実行し、結果の行をSQL Azureテーブルに挿入します。待ち行列に複数のタスク(それぞれ約1000〜2000行)が存在する可能性があるため、これらの各インサートはかなり高速に実行する必要があります。 ローカルマシンを使用したSQL Azureへのタイミングテストにはかなりの時間がかかりました(1000個のインサートで約2分)。これは、ネットワークの待ち時間に起因する可能性があります。私は、作業者の役割からの挿入がはるかに高速でなければならないと仮定しています。 しかし、エンティティ・フレームワークはバッチ・インサートをしないので、SQLBulkCopyを使用することを考えていました。 SQLBulkcopyを使用すると、バッチサイズが1000であればクエリが抑制されますか?推奨されるアプローチはありますか?
回答: バルクコピーAPIは、目的を完全に果たし、非常に劇的なパフォーマンス向上をもたらすはずです。 私は2000年のバッチサイズを持つ1,000万レコードをAzureデータベースに挿入してテストしました。ローカルマシンから実行した場合、バッチあたり〜10秒のパフォーマンスでスロットリングが発生しませんでした。