SQLServerインスタンスと同じ物理サーバー上にインポートユーティリティがあります。カスタムのIDataReader
を使用する 、フラットファイルを解析し、SQLBulkCopy
を使用してデータベースに挿入します。 。一般的なファイルには、約6Mの修飾行があり、平均して5列の10進数と短いテキストがあり、1行あたり約30バイトです。
このシナリオを考えると、5,000のバッチサイズが速度とメモリ消費の最良の妥協点であることがわかりました。私は500から始めて、もっと大きいもので実験しました。 5000は平均で500よりも2.5倍高速であることがわかりました。600万行の挿入には、バッチサイズが5,000の場合は約30秒、バッチサイズが500の場合は約80秒かかります。
10,000は測定可能なほど速くはありませんでした。 50,000まで移動すると、速度が数パーセント向上しましたが、サーバーの負荷を増やす価値はありません。 50,000を超えると、速度の向上は見られませんでした。
これは数式ではありませんが、使用するもう1つのデータポイントです。