1

我在 SSIS 包中有一些数据流,我正在尝试最大化缓冲区。运行它的机器有 16GB 的 RAM,并且什么都不做(换句话说,内存不是问题)。

因此,首先我将 SSIS 日志记录设置为 buffertuning,然后将 DefaultBufferSize 设置为 104857600 (100MB)。然后我将 DefaultBufferMaxRows 设置为 40000(我计算出来的)并运行包。buffersizetuning 事件显示“缓冲区类型 0 中的行将导致缓冲区大小大于配置的最大值。这种类型的缓冲区中将只有 20448 行。”。好的,所以现在我知道有一些列是不需要的,所以我删除了它们。其中一些列是 varchar(500) 和 XML 列等。我再次运行包,我得到的消息是“缓冲区类型 0 中的行将导致缓冲区大小大于配置的最大值。这种类型的缓冲区中只有 20448 行。” 完全相同的数字!

所以我的问题是,为什么缓冲区似乎没有认识到传递的数据较少,因此应该有更多的行适合缓冲区?

4

2 回答 2

0

您的包是否在“RunInOptimizedMode”中运行?显然,这会自动删除未使用的列。

尝试将此包属性设置为 false,然后运行您描述的两个场景。

于 2015-02-23T15:44:07.340 回答
0

尝试将该 DataFlow 任务的 DefaultBufferSize 从 10485760 增加到 104857600 并再次检查。我遇到了同样的问题,增加缓冲区大小解决了问题+

于 2017-08-28T10:45:06.450 回答