我终于得到我的插入批处理工作,现在我一直在摆弄批处理的大小,但我看不到50之间的值和10000的值之间的性能差异。这似乎很对我来说很奇怪,但我不知道幕后发生了什么,所以这可能是正常的行为。如何将DataAdapter.UpdateBatchSize设置为“最佳”值?
我将160k行插入表中,测试值的平均值为115 +/- 2秒。没有配料需要210秒,所以我对这种改进非常满意。目标表是:
CREATE TABLE [dbo].[p_DataIdeas](
[wave] [int] NOT NULL,
[idnumber] [int] NOT NULL,
[ideaID] [int] NOT NULL,
[haveSeen] [bit] NOT NULL CONSTRAINT [DF_p_DataIdeas_haveSeen] DEFAULT ((0)),
CONSTRAINT [PK_p_DataIdeas] PRIMARY KEY CLUSTERED
(
[wave] ASC,
[idnumber] ASC,
[ideaID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
我读What to look for when setting UpdateBatchSize,答案是简单地测试了几个不同的值。我可以理解,但是如果知道表格设计,SQL问题和即将插入的数据,那么不应该有可能计算或至少猜测一个好的价值吗?
有人可以推荐的最佳做法吗?