【发布时间】:2014-07-18 14:54:19
【问题描述】:
我希望有人可以帮助我。
我的问题与 SISS 有关,特别是查找数据流项以及它如何根据所选缓存模式处理 NULL 值。
我有一个使用类型 2 更新方法的非常大的数据集(72 列,37,000,000 条记录)。
我在数据流中使用查找来识别对现有记录的更新,我匹配所有相关字段,如果所有字段都匹配,那么显然传入记录与表中的现有记录匹配,因此被丢弃。如果没有匹配,则执行类型 2 更新。
由于数据集较大,服务器资源有限,如果将 Lookup 的 Cache Mode 设置为 Full Cache,会导致进程因内存不足而失败;因此,我不得不将缓存模式切换为部分缓存。这解决了内存问题,但会导致另一个问题。由于某些原因,在部分缓存模式下,表中的 NULL 值与传入记录中的 NULL 值不匹配,而如果将缓存模式设置为完全缓存,则匹配。
这种行为看起来很奇怪,我无法在任何地方找到它的记录。一种方法是合并 NULL 值,但这是我想避免的。
任何帮助将不胜感激。
干杯 本
【问题讨论】:
-
stackoverflow.com/questions/7233766/… 文档确实存在 ;)
-
您真的需要在您的查找中撤回所有 72 列吗?遗憾的是,我不得不定期拉回可比较的数据量以进行查找,但我能够将其提炼为 2 个哈希值 - 我的匹配键和更改检测键
-
我想我正在寻找一个解释,为什么 NULL 在完全缓存模式下匹配,但在部分缓存模式下却不匹配。我想你不知道为什么会这样?
-
为什么?因为msdn 文档声明它们在完全缓存模式下进行,而不是在部分/无。他们做出这个设计决定的原因超出了我的工资等级