SqlBulkCopy的推荐批量是多少?我正在寻找一个通用公式,可以作为性能调整的起点.

推荐答案

我有一个导入实用程序与我的SQL Server实例位于同一物理服务器上.它使用自定义IDataReader解析平面文件,并使用SQLBulkCopy将其插入到数据库中.一个典型的文件大约有6M个合格行,平均5列小数和短文本,每行大约30字节.

在这种情况下,我发现批量大小为5000是速度和内存消耗的最佳折衷方案.我从500开始,try 了更大的.我发现5000比500平均快2.5倍.插入600万行大约需要30秒(批量大小为5000)和80秒(批量大小为500).

一万美元的速度并没有明显加快.升级到50000后,速度提高了几个百分点,但不值得增加服务器上的负载.超过5万辆车的速度没有提高.

这不是一个公式,但它是供您使用的另一个数据点.

.net相关问答推荐

如何使用AWS Lambda函数制作网络挂钩?

如何从 tshark 的 stderr 捕获实时数据包计数?

是否有内置方法将 nuget 包引用为 csproj 中的文件?

使用 PostAsJsonAsync C# 时出现错误请求

Web API 中基于令牌的身份验证,无需任何用户界面

.NET - WindowStyle = hidden 与 CreateNoWindow = true?

使用 .NET 在 Windows 中创建弹出式 toastr 通知

使用多个 MemoryCache 实例

struct 中需要覆盖什么以确保平等正常运行?

如何等到远程 .NET 调试器附加

为什么 .NET 中不需要 Maven?

在 C# 中将字符串转换为十六进制字符串

.NET 反射的成本是多少?

如何将 WebResponse.GetResponseStream 返回转换为字符串?

.NET 进程间通信的最佳 Select 是什么?

微软内部 PriorityQueue 中的错误?

无法加载文件或程序集System.ValueTuple

DateTime.Compare 如何判断日期是否小于 30 天?

MailMessage,Sender 和 From 属性的区别

在 .NET 中乘以时间跨度