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 - 批量插入每批有多少行可供选择?的主要内容,如果未能解决你的问题,请参考以下文章