我有一个 数据流任务将一堆数据从多个来源移动到多个目的地。总共约50个。移动的数据从一个数据库到另一个数据库,每个流中的行和列各不相同。
虽然我相信我理解数据流任务背后的基本思想 DefaultBufferMaxRows 和 默认缓冲区大小 因为它涉及到 每批次行数 和 最大插入提交大小 的目标,我不清楚当有多个不相关的源和目标流时会发生什么。
我想知道的是以下哪一项最有意义:
我相信我读过一些地方说最好将每个源和目标都放在自己的数据流任务中,但是此时我无法找到链接。
我在网上找到的大多数例子似乎总是一个来源到一个或多个目的地,或者只是一对一。
最佳答案
让我从基础开始。数据流任务是一项任务,组织从数据源到数据目标的数据管道。这是 SSIS 中的一项独特任务,因为它在 SSIS 本身中运行数据操作,所有其他任务都调用外部系统来处理 SSIS 中的数据。
关于之间的关系DefaultBufferMaxRows , 默认缓冲区大小 因为它涉及到 每批次行数 和 最大插入提交大小 目的地。没有直接关系。 DefaultBufferMaxRows 和 默认缓冲区大小 是数据流管道的属性;管道批量处理行,这些属性控制处理批量大小。这些属性控制数据流任务的 RAM 消耗和性能。
另一方面,每批次行数 和 最大插入提交大小 是Data Destination的属性,即仅在Fast Load模式下的OLE DB Destination;它控制数据目标本身的性能。您可能有一个带有平面文件目标的数据流,而您没有 每批次行数 ,但肯定会有 DefaultBufferMaxRows 和 默认缓冲区大小 特性。
我的经验的典型用法:
在 SSIS 2016+ 中有一个“神奇的设置”自动调整缓冲区大小 它告诉引擎自动增长缓冲区。
这些属性的值通常在 QA 环境中的性能测试中定义。在开发中 - 使用默认值。
关于包装设计:
作为底线,保持简单——每个 DFT 一对 Source-Destination,并仅在必要时使用您的参数。
关于ssis - "Buffer Size"和 "Max Rows"与多个源和目标流 "Rows Per Batch"和 "Insert Commit Size"的关系是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58104113/