2016-12-21 46 views
0

我正在使用批量插入SSIS在SQL Server中填充大約10M行的表。 我已經搜索了很多關於它,仍然無法找到答案。SSIS - 插入批量每批有多少行可供選擇?

多少個每批行數我應該選擇嗎? 有多少最大插入提交大小我應該選擇嗎?

很高興收到每個人的解釋。

我測試了它並更改了每批的行數。目前爲止我收到的最好成績是5M。

感謝您的幫助!

+0

在這個存在的問題的一些很好的答案:http://stackoverflow.com/questions/2739320/ssis-2008-rows-per-batch-and-maximum-insert-commit-size#2739416 – jorgesalvador

回答

0

ROWS_PER_BATCH應設置爲你的「中源行的總數量」的估計,因爲這,然後使用由SQL服務器優化用於在單個操作中加載該數據的查詢計劃。

因此,基於我的解釋建議的設置應該如下:

如果「最大插入提交大小」指定那就不必設置「每一批行」,因爲它總要被

忽略

如果未指定「最大插入提交大小」,即保留爲0,則將「每批行數」設置爲最佳估計將加載的「總行數」,以便使SQL服務器能夠選擇最高效執行操作的方式。

0

對於BatchSize性質,我認爲所有的數據將被推到一個批次,如果你把它設置爲0

+0

但什麼是最好的方法到它?爲什麼要使用0?謝謝 –

+1

沒有這樣的「最好的辦法」,但取決於你的真實情況。簡而言之,當設置爲0時,所有數據將被推送到一個批處理中,它將被視爲一個事務,如果有任何失敗,事務將被回滾,但對於批處理的特定行數,例如,每批次100行,它將爲每個事務插入100行,如果在批次3期間發生任何錯誤,插入的批次1和批次2將不會僅回滾到批次3,並且任務停止。 – LONG

+0

如果您需要更多參考:https://technet.microsoft.com/en-us/library/ms188267(v = sql.105).aspx – LONG