1

で使用する場合と使用しBatchSizeない場合のパフォーマンスと動作の違いを誰でも教えてください。現在、私は指定していません。私の値は 100 から 200000 まで変化する可能性があります。最適なアプローチを提案してください。BatchSizeOracleBulkCopyBatchSizeBatchSize

try
{
     var columnMapping =
         from table in orgTable.Columns.Cast<DataColumn>()
         select
             new OracleBulkCopyColumnMapping(table.ColumnName, table.ColumnName);
     using (var bulkcopy
         = new OracleBulkCopy(ConnectionString, OracleBulkCopyOptions.Default))
     {                    
         bulkcopy.DestinationTableName = GoldOrgTable;                                        
         foreach (var mapping in columnMapping)
             bulkcopy.ColumnMappings.Add(mapping);
         bulkcopy.BulkCopyTimeout = TimeOut.Value;
         bulkcopy.WriteToServer(orgTable);
         orgTable.Dispose();
     }
     return true;
}
4

1 に答える 1

1

最適なバッチサイズは 500 ~ 5000 程度に設定する必要があります。

一括コピーを使用する利点は次のとおりです。

  • データベースへの挿入のパフォーマンスを向上させる(所要時間を短縮する)
  • その場で重い挿入(多くの行の挿入)で操作する

ただし、懸念する必要があるいくつかの短所もあります。

  • 一括コピーに行がある場合、トラブルシューティングが難しくなり、エラーが発生します
  • データの挿入または切り捨てにデータ型の照合または変換の問題 (Unicode および非 Unicode) があるかどうかがわからない場合があります。一括コピー プロセスが正常に完了しても、一部のデータが正しく挿入されない場合があります (ダーティ データ)。

詳細については、次の Web サイトを 参照してください。 http://docs.oracle.com/html/E10927_01/OracleBulkCopyClass.htm#CHDCDEIA または .NET を使用して Oracle に一括挿入

于 2012-12-09T15:53:17.470 に答える