给BatchSize和不为OracleBulkCopy提供BatchSize有什么区别

ado.net c# oracle sql sqlbulkcopy

任何人都可以在使用BatchSize和不使用OracleBulkCopy BatchSize之间给出性能和行为差异。目前我没有指定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;
}

热门答案

最佳批量大小应设置在500~5000左右。

使用批量复制的专业人士是:

  • 增加插入db的性能(减少所需时间)
  • 在飞行中操纵大量插入(多行插入)

然而,它也有一些我们需要关注的缺点:

  • 当批量复制中有一行出现错误时,更难以排除故障
  • 可能不知道插入或截断数据是否可能存在某些数据类型排序规则或转换问题(unicode和非unicode),即使批量复制过程成功完成,某些数据也可能无法正确插入(脏数据)

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因