0

在 ssis 数据流中有一个查找组件,它在具有 1800 万条记录的表上查找。我已将查找配置为具有完整缓存。

   Default buffer size :20485760 
Default Buffer Max rows: 100000 
The lookup join is based on an ID column of varchar(13)type

它给出了如下所示的错误。什么样的查找配置适合缓存这么多记录

Error: The buffer manager cannot write 8 bytes to file "C:\Users\usrname\AppData\Local\Temp\16\DTS{B98CD347-1EF1-4BC1-9DD9-C1B3AB2B8D73}.tmp". There was insufficient disk space or quota.

如果我使用没有缓存的查找,性能会有什么不同?我确实明白,在完全缓存模式下,数据在预执行阶段之前被缓存,不必回到数据库。这个完全缓存内存占用了大量内存并为数据流增加了额外的启动时间。我的问题是什么我是否必须设置配置才能在完全缓存模式下处理大量数据

如果查找表有数百万条记录(并且它们不适合完整缓存),解决方案是什么

4

2 回答 2

0

您可以将 SSIS 中的 Buffertempstoragepath 属性设置为某些快速驱动器,因为 Blobtempstoragepath 和 buffertempstoragepath 将使用temptmp系统变量。因此,如果 tmp 变量在您的情况下无法容纳大型数据集,则它使用查找转换。因此,大数据集将使用驱动器空间并为您执行工作。

于 2015-02-25T15:48:01.147 回答
0

请改用 Merge Join 组件。对连接键上的两个输入进行排序,根据您的规范指定内/左/全连接。使用不同的输出来获得查找组件等功能。

Merge Join 通常在较大的数据集上表现更好。

于 2014-03-12T12:02:57.870 回答