gpt4 book ai didi

c# - 如何动态计算 ADO.NET DataAdapter 的最佳 UpdateBatchSize

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:04 25 4
gpt4 key购买 nike

我的项目中有一个方法可以使用 ADO.NET DataAdapter 更新我的 SQL 表。

现在,这些表中的一些可能非常大,可能有 5000 行,而有些则只包含几行数据。我希望能够根据 DataTable 的大小自动计算每个表的最佳 UpdateBatchSize。

到目前为止,我采用的方法是使用以下扩展方法:

public static void SetBatchUpdateSize(this DbDataAdapter adapter, int rowCount)
{
if (rowCount <= 5)
{
adapter.UpdateBatchSize = 5;
}
else if (rowCount <= 1000)
{
adapter.UpdateBatchSize = rowCount/2;
}
else
{
adapter.UpdateBatchSize = 500;
}
}

这确实有效,但我似乎在较小的表上受到性能影响。

为了完整起见,这里是我在适配器上设置尺寸的方式:

var db = dbAccessLayer.CreateConnection();

try
{
adapter.SelectCommand.Connection = db;
adapter.SelectCommand.Connection.Open();
adapter.SelectCommand.Transaction = transaction;
SetTimeout(timeout);
adapter.SetBatchUpdateSize(dataTable.Rows.Count);
int result = adapter.Update(Table);
adapter.SelectCommand.Transaction = null;
return result;
}
catch (Exception)
{
dataTable.RejectChanges();
throw;
}

似乎有很多关于更新批处理的性能优势的猜测,但没有关于最佳关系的具体事实。我发现我在低速和低质量连接上遇到 SQL 更新问题,所以我正在寻找尽可能优化它的方法。

最佳答案

如果您的 updatebatchsize 大于一次性的,那么必须通过网络传输大量数据,因此非常大的 UpdateBatchSize 不会有太大区别。相比之下,尺寸越小性能越好。

关于c# - 如何动态计算 ADO.NET DataAdapter 的最佳 UpdateBatchSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com