我終於得到我的插入批處理工作,現在我一直在擺弄批處理的大小,但我看不到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問題和即將插入的數據,那麼不應該有可能計算或至少猜測一個好的價值嗎?
有人可以推薦的最佳做法嗎?