2014-03-12 104 views
0

在ssis Dataflow中有一个查找组件,该查找组件在一张拥有1800万条记录的表上进行查找。我已经使用完全缓存配置了查找。SSIS查找失败

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

它给出了一个错误,如图below.What查找配置适合缓存这些多条记录

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. 

这将是在性能上的区别,如果我使用查找无缓存? 我的确了解到,在完全缓存模式下,数据在预执行阶段之前被缓存,并且不必返回到数据库。此完整缓存内存需要大量内存并为数据流添加附加启动时间。我的问题是我有什么配置设置,以处理全缓存模式大量数据

请告诉我解决办法,如果查找表中有千万条记录(以及他们在整个缓存不配合)

回答

0

使用改为合并连接组件。对连接键上的两个输入进行排序,根据您的规范指定内部/左侧/完整连接。使用不同的输出来获得查找组件等功能。

合并连接通常在较大的数据集上执行得更好。

+0

但是..它会降低性能吗?排序是一个昂贵的操作,在这种情况下,我也需要使用2个排序组件! – user1254579

+1

在源系统中排序比在ssis中同时使用查找和排序组件要快得多。对源进行排序(使用SQL语句,ORDER BY)并使用高级编辑器指定输出已排序,并指定排序键。合并加入将选取这个元数据并应用这些键自动加入。 – cairnz

+1

详情请参阅这里:http://www.ssistalk.com/2009/09/17/ssis-avoiding-the-sort-components/(编辑评论太晚了) – cairnz

0

可以在SSIS设置BufferTempStoragePath属性的一些fastdrives为脱机BLOBTempStoragePath和buffertempstoragepath的将使用临时TMP系统变量。因此,如果tmp变量无法在您的情况下保存大数据集,则使用查找转换。所以大数据集将使用驱动器空间并将为您执行这项工作。

+0

我不认为这回答了这个问题。 – thomasb