为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:我根据DM8程序员手册.pdf文档中,使用DmBulkCopy和DmBulkCopy2分别进行20w数据的插入,文档中推荐使用DmBulkCopy2来进行快速批量装载数据。但是根据我测试的几轮插入速度比对下俩DmBulkCopy2的速度比DmBulkCopy的速度慢是为什么?
代码
public static void BulkCopy1(DataTable dt)
{
var Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "xxx",
DbType = SqlSugar.DbType.Dm,
IsAutoCloseConnection = true
});
var sw = Stopwatch.StartNew();
using var bc = new DmBulkCopy((DmConnection)Db.Ado.Connection)
{
DestinationTableName = "BB_999999_TMP",
BatchSize = 2000,
};
bc.WriteToServer(dt);
sw.Stop();
Console.WriteLine($"共插入{dt.Rows.Count}行,用时{sw.ElapsedMilliseconds}ms");
}
public static void BulkCopy2(DataTable dt)
{
var Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "xxx",
DbType = SqlSugar.DbType.Dm,
IsAutoCloseConnection = true
});
var sw = Stopwatch.StartNew();
using var bc = new DmBulkCopy2((DmConnection)Db.Ado.Connection)
{
DestinationTableName = "BB_999999_TMP",
BatchSize = 2000,
schema = "BAZX"
};
bc.WriteToServer(dt);
sw.Stop();
Console.WriteLine($"共插入{dt.Rows.Count}行,用时{sw.ElapsedMilliseconds}ms");
}
DmbulkCopy 263000条 插入时间 53256ms
DmbulkCopy2 263000条 插入时间 108428ms

DmBulkCopy2效率低于DmBulkCopy的根本原因在于两者底层实现机制的差异,具体表现为:
性能差异的异常场景
额外的数据缓冲开销
DmBulkCopy2特有的性能调优参数:
不当的参数组合可能导致性能劣化
技术验证建议
最佳实践建议