dis*_*kid 2 c# database sql-server datatable sqlbulkcopy
我正在使用 anSqlBulkCopy将一百万条记录(每条记录大约有 10 列)的内容插入datatable到数据库表中。当我更改批量大小属性 ( bulkCopy.BatchSize) 时,我在批量复制期间看到一些不稳定的值。
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.CheckConstraints))
{
bulkCopy.DestinationTableName = destinationTableName;
bulkCopy.BatchSize = 100000;
bulkCopy.BulkCopyTimeout = 1800;
if (matchingColumns != null || matchingColumns.Count > 0)
foreach (KeyValuePair<string, string> kv in matchingColumns)
bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(kv.Key, kv.Value));
bulkCopy.WriteToServer(dt);
}
Run Code Online (Sandbox Code Playgroud)
当我不使用批量大小时,该过程在 7 分钟内完成。然后我将批量大小设置为100,000,时间在5:30左右,然后我将其设置为50,000,时间增加到10分钟。
我想知道批量大小对 INSERT 速度的影响。一般来说,它会让事情变得更快还是更慢?