2

序列生成器中止时的行为如何?

如果从序列生成器将 SL.NO 1 到 50 加载到目标表并且工作流突然中止,那么在下一次运行期间,当前值是多少?是 1 还是 51?

4

1 回答 1

0

是否取决于序列生成器转换是否可重用以及您是否配置了缓存值的数量。

如果它不可重用并且您没有使用缓存值的数量,那么它将从 1 开始,因为由于致命错误,在会话结束时,IS 无法使用最终当前值加一来更新存储库。

如果它是不可重用的,但您使用的缓存值数量为 100,那么它将从 101 开始。

如果它是可重用的并且缓存值的数量是 100,那么它的行为仍然与上面的场景#2 一样。

当使用缓存值的数量时,IS 会提取配置的数量(在我们的示例中为 100)并在会话开始时更新存储库。

**不可重复使用与可重复使用**

假设您有一个由两个不同映射加载的表,并且您正在使用序列生成器来加载该表的键。如果您使用不可重用的序列生成器并并行运行这些映射,您将遇到键的争用。为什么?因为对于不可重用的序列生成器,IS(集成服务)从存储在存储库中的值开始,并在会话结束时使用下一个可用值更新存储库。
当您使用不可重用和缓存值的组合(例如设置为 100)时,IS 将从存储在存储库中的值开始,并为此会话保留或缓存 100 个值并更新存储库的下一个可用值。如果会话中只使用了 30 个,则丢弃剩余的 70 个。这意味着永远不会使用 70 个键值。如果所有 100 都用完了,那么 IS 再次访问 repo。

在可重用转换的情况下,您需要配置缓存值的数量。

可重用和不可重用之间的另一个主要区别是您不能重置可重用转换的序列。

于 2015-06-04T01:54:54.860 回答