gpt4 book ai didi

c# - 单个记录上的 SqlBulkCopy?

转载 作者:行者123 更新时间:2023-11-30 16:10:18 25 4
gpt4 key购买 nike

我的软件可以部署在两种不同的配置中:一种是我全天偶尔收到单个数据点的涓流馈送,另一种是我在一天结束时得到所有数据的转储。对于日终转储,显然,我将使用具有可配置批处理大小的 SqlBulkCopy() 命令。

但是,为了简单起见,我想通过将批量大小设置为 1 来在滴流中使用相同的代码。这样做会不会产生很大的开销?我是否会更好地执行单个 INSERT 调用以进行涓流馈送?

工作流程如下所示:

ICollection<MyClass> dataPoints = ...;
public void AddDataPoint(MyClass data)
{
dataPoints.Add(data);
if (dataPoints.Count >= ConfigurableBatchSize)
{
DoBulkCopy(dataPoints); // converts MyClass objects into rows of a DataTable, etc
}
}

最佳答案

你会坐火车去街角的杂货店吗?您可以偶尔使用批量复制进行单行插入,但如果单行是规则而不是异常(exception)情况,我建议不要这样做,这似乎是您的用例。也就是说,如果插入很少,您可能根本不会注意到开销。您要避免的主要事情是单行批处理的连续流。

几年前,我在关于最大化 SQL Server 插入性能的 SQL Saturday session 上对各种插入方法和大小进行了许多性能测试。使用单线程应用程序时,单行参数化插入的速度约为每秒 2,200 次,而使用 DataTable 源的单行 SqlBulkCopy 速度约为每秒 500 次(服务器 CPU 时间翻倍)。您可以从sqlsaturday.com/154/schedule.aspx下载Power Point。 .

关于c# - 单个记录上的 SqlBulkCopy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26027025/

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