您的位置:首页 > 大数据

.NET批量大数据插入性能分析及比较(4.使用DataAdapter批量插入)

2011-05-04 13:16 330 查看
#region 使用DataAdapter
        public static bool ExecuteDataAdapterInsert(DataTable dt, int batchSize)
        {
            int count = dt.Rows.Count;
            bool flag = false;
            try
            {
                SqlConnection cn = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand("Insert into TestTable(Id, Name) Values(@Id, @Name)", cn);
                cmd.Parameters.Add("@Id", SqlDbType.Int, 4, "Id");
                cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 20, "Name");
                cmd.UpdatedRowSource = UpdateRowSource.None;
                SqlDataAdapter da = new SqlDataAdapter();
                da.InsertCommand = cmd;
                da.UpdateBatchSize = batchSize;
                cn.Open();
                da.Update(dt);
                cn.Close();
                flag = true;
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex.Message);
                return false;
            }
            return flag;
        }
        #endregion




结果如下:

Use SqlServer DataAdapter Insert;RecordCount:40000;BatchSize:10;Time:21569;

Use SqlServer DataAdapter Insert;RecordCount:40000;BatchSize:20;Time:19607;

Use SqlServer DataAdapter Insert;RecordCount:40000;BatchSize:50;Time:19647;

Use SqlServer DataAdapter Insert;RecordCount:40000;BatchSize:100;Time:18649;

Use SqlServer DataAdapter Insert;RecordCount:40000;BatchSize:200;Time:21823;



测试的结果让我比较失望,SqlDataAdapter会为每个修改行发送一条T-SQL命令,所以效率并不高。



而且再其他的方式中,都可以进行异步处理,SqlDataAdapter的Update()方法并不支持异步的结果,所以此方法不推荐



全文链接:

.NET批量大数据插入性能分析及比较(1.准备工作)

.NET批量大数据插入性能分析及比较(2.普通插入与拼接sql批量插入)

.NET批量大数据插入性能分析及比较(3.使用事务)

.NET批量大数据插入性能分析及比较(4.使用DataAdapter批量插入)

.NET批量大数据插入性能分析及比较(5.使用SqlBulkCopy)

.NET批量大数据插入性能分析及比较(6.使用表值参数)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: