我在 SSIS 包中有一些数据流,我正在尝试最大化缓冲区。运行它的机器有 16GB 的 RAM,并且什么都不做(换句话说,内存不是问题)。
因此,首先我将 SSIS 日志记录设置为 buffertuning,然后将 DefaultBufferSize 设置为 104857600 (100MB)。然后我将 DefaultBufferMaxRows 设置为 40000(我计算出来的)并运行包。buffersizetuning 事件显示“缓冲区类型 0 中的行将导致缓冲区大小大于配置的最大值。这种类型的缓冲区中将只有 20448 行。”。好的,所以现在我知道有一些列是不需要的,所以我删除了它们。其中一些列是 varchar(500) 和 XML 列等。我再次运行包,我得到的消息是“缓冲区类型 0 中的行将导致缓冲区大小大于配置的最大值。这种类型的缓冲区中只有 20448 行。” 完全相同的数字!
所以我的问题是,为什么缓冲区似乎没有认识到传递的数据较少,因此应该有更多的行适合缓冲区?