SSIS - 批量插入每批有多少行可供选择?

Posted

技术标签:

【中文标题】SSIS - 批量插入每批有多少行可供选择?【英文标题】:SSIS - Insert Bulk How many Rows per batch to choose? 【发布时间】:2016-12-21 16:24:09 【问题描述】:

我在 SSIS 中使用 bulk insert 来填充 SQL Server 中大约 10M 行的表。 我用谷歌搜索了很多,但仍然找不到答案。

我应该选择多少每批行? 我应该选择多少最大插入提交大小

很高兴收到关于每一个的解释。

我已经对其进行了测试并更改了每批次的行数。到目前为止,我收到的最好结果是 5M。

感谢您的帮助!

【问题讨论】:

这个现有问题的一些很好的答案:***.com/questions/2739320/… 【参考方案1】:

ROWS_PER_BATCH 应该设置为您对“源中的总行数”的估计,因为 SQL 服务器随后会使用它来优化查询计划,以便在单个操作中加载此数据。

所以,根据我的解释,建议的设置应该如下:

如果指定了“最大插入提交大小”,则不要设置“每批次的行数”,因为无论如何它都会被忽略

如果未指定“最大插入提交大小”,即保留为 0,则将“每批次的行数”设置为您将加载的“总行数”的最佳估计值,以使 SQL Server 能够选择最多执行操作的有效方法。

【讨论】:

【参考方案2】:

对于BatchSize属性,我认为如果设置为0,所有数据将被推送到一批

【讨论】:

但是最好的方法是什么?为什么要使用 0?谢谢 没有这样的best approach,但取决于您的实际情况。简而言之,设置为 0 时,所有的数据将被批量推送,将被视为一个事务,如果任何失败,事务将回滚,但对于批量的特定行数,例如,每批 100 行,每个事务将插入 100 行,如果在第 3 批期间发生任何故障,插入的第 1 批和第 2 批将不会仅回滚第 3 批并且任务停止。 如需更多参考:technet.microsoft.com/en-us/library/ms188267(v=sql.105).aspx

以上是关于SSIS - 批量插入每批有多少行可供选择?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSIS 2008 批量插入多个 XML 文件

MyCat批量插入

Python批量插入问题?

在EXCEL的表格中如何批量插入同样内容的批注

在EXCEL的表格中如何批量插入不同内容的批注

求助~~ INSERT INTO....SELECT怎么一次性插入多行数据