1. ホーム
  2. .net

[解決済み] SqlBulkCopyの推奨バッチサイズを教えてください。

2023-04-05 18:02:27

質問

の推奨バッチサイズは? SqlBulkCopy ? パフォーマンスチューニングの出発点として使用できる一般的な計算式を捜しています。

どのように解決するのですか?

SQL Server インスタンスと同じ物理サーバー上にインポート ユーティリティがあります。カスタム 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 つのデータ ポイントとして使用できます。