我有一个SSIS包,它假设在它们上面循环100,000个记录,并且每个包都将细节保存到几个表中。 它工作正常,直到它达到3000条记录附近,然后视觉工作室崩溃。此时devenv.exe使用了大约500MB,只处理了3000行。 我确定问题不在于特定记录,因为它总是发生在不同的3K记录上。 我有一台带2 GIG ram的好电脑。 我正在使用SSIS 2008。
知道可能是什么问题吗?
感谢。
答案 0 :(得分:0)
尝试增加数据流任务的默认缓冲区大小。
最佳实践#7 - DefaultBufferMaxSize和DefaultBufferMaxRows
正如我在“最佳实践#6”中所说,执行树创建 用于存储传入行和执行转换的缓冲区。所以 它创建了多少个缓冲区?一行中有多少行 缓冲?它如何影响性能?
创建的缓冲区数量取决于适合a的行数 缓冲区和多少行适合缓冲区依赖于其他几个 因素。第一个考虑因素是估计的行大小,即 来自传入的所有列的最大大小的总和 记录。第二个考虑因素是DefaultBufferMaxSize属性 数据流任务。此属性指定默认最大值 缓冲区的大小。 默认值为10 MB 及其上限和下限 边界受到SSIS的两个内部属性的约束 是 MaxBufferSize(100MB)和 MinBufferSize(64 KB)。这意味着大小 缓冲区的大小可以小到64 KB,大到100 MB。第三 factor是, DefaultBufferMaxRows,它又是数据流的属性 任务,指定缓冲区中的默认行数。它的 默认值为10000 。
尽管SSIS在按顺序调整这些属性方面做得很好 如果大小超过,则创建最佳数量的缓冲区 DefaultBufferMaxSize然后它减少缓冲区中的行。对于 更好的缓冲性能你可以做两件事。首先你可以删除 源中的不需要的列和每列中的设置数据类型 适当的,特别是如果你的来源是平面文件。这将 使您能够在缓冲区中容纳尽可能多的行。 其次,如果您的系统有足够的可用内存,您可以调整 这些属性可以有少量的大缓冲区 提高绩效。请注意,如果您更改这些值 属性到页面假脱机的位置(参见最佳实践#8) 开始时,它会对性能产生负面影响。所以在设置值之前 对于这些属性,首先要在您的环境中进行彻底测试 适当地设置值。
您可以启用BufferSizeTuning事件的日志记录以了解其数量 缓冲区包含的行,您可以监视“缓冲区假脱机” 性能计数器,以查看SSIS是否已开始页面假脱机。一世 我将在下一篇讲述更多有关事件记录和性能计数器的内容 这个系列的提示。