1

BatchSize任何人都可以给出使用和不使用BatchSizein之间的性能和行为差异OracleBulkCopy。目前我没有指定BatchSize. 我的BatchSize可能从 100 到 200000 不等。请提出最佳方法。

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),即使批量复制过程已成功完成,某些数据也可能未正确插入(脏数据)

进一步讨论您可以在以下网站上找到它:http: //docs.oracle.com/html/E10927_01/OracleBulkCopyClass.htm#CHDCDEIA使用 .NET 批量插入到 Oracle

于 2012-12-09T15:53:17.470 回答