Sequence Generator分析
2015-07-01 12:38
567 查看
Current Value:3 Increment By:2
则初始化 NEXTVAL:3 CURRVAL:3
当且仅当 NEXTVAL走一行时,CURRVAL才增加: NEXTVAL+Increment By
(如果NEXTVAL没有connect to downstream,则CURRVAL始终停留在3)
第一次运行workflow:
row NEXTVAL CURRVAL
1 3 5 (处理每一行时,都是先走NEXTVAL,然后再走CURRVAL=NEXTVAL+Increment By)
2 5 7
3 7 9
4 9 11
运行完workflow后,Integration Service把CURRVAL存入Repository Service数据库里面持久化。
下次运行workflow: Current Value从Repository Service数据库里面取得持久化Value
Current Value:11 Increment By:2
则初始化 NEXTVAL:11 CURRVAL:11
第二次运行workflow:
row NEXTVAL CURRVAL
1 11 13
2 13 15
3 15 17
4 17 19
运行完workflow后,19被存入Repository Service数据库,供下次workflow运行时初始化Current Value。
mapping中的Current Value显示值不一定是数据库中的值,一定要取得最新的mapping (disconnect folder then open folder)
再更改Current Value并运行workflow,将新的更改保存到Repository Service中。
Sequence用来产生序列号用以作为主键栏位,可以重用;
只有两个输出端口:Nextval和Currval;
通过配置Start Value,End Value,Current Value 和 Cycle属性,可以让产生的Nextval在一个指定的范围内循环;
可以将Nextval端口连到多个Target上,这时是阻塞式的产生序列号的,可以保证多个Target得到不同的序列号,如果想要得到相同的序列号,可以将Nextval端口连到Target之前的一个共有的Transformation上;
如果只连出Currval,得到的是一个常量,并且一次阻塞只能获得一个值,所以为性能考量,一般都不连出这个端口,如果Nextval同时有连出,这时Currval = Nextval + Increment By;
在没有配置Cycle属性时,如果序列号达到了End Value,会话会失败;
不重用的Sequence有Reset属性,启用以后,在每个会话结束时会将Current Value置为会话开始时的值,这个值是它产生的第一个值;
当Sequence配置成重用时,应该给Number of Cached Values 一个大于零的缓存值,这个值是主要为保证不出现重复数据而设置的.比如当设置为100,那么一个线程在从1开始在跑,则另外一个线程会从101开始.每次跑完都要补足100整数.
则初始化 NEXTVAL:3 CURRVAL:3
当且仅当 NEXTVAL走一行时,CURRVAL才增加: NEXTVAL+Increment By
(如果NEXTVAL没有connect to downstream,则CURRVAL始终停留在3)
第一次运行workflow:
row NEXTVAL CURRVAL
1 3 5 (处理每一行时,都是先走NEXTVAL,然后再走CURRVAL=NEXTVAL+Increment By)
2 5 7
3 7 9
4 9 11
运行完workflow后,Integration Service把CURRVAL存入Repository Service数据库里面持久化。
下次运行workflow: Current Value从Repository Service数据库里面取得持久化Value
Current Value:11 Increment By:2
则初始化 NEXTVAL:11 CURRVAL:11
第二次运行workflow:
row NEXTVAL CURRVAL
1 11 13
2 13 15
3 15 17
4 17 19
运行完workflow后,19被存入Repository Service数据库,供下次workflow运行时初始化Current Value。
mapping中的Current Value显示值不一定是数据库中的值,一定要取得最新的mapping (disconnect folder then open folder)
再更改Current Value并运行workflow,将新的更改保存到Repository Service中。
Sequence用来产生序列号用以作为主键栏位,可以重用;
只有两个输出端口:Nextval和Currval;
通过配置Start Value,End Value,Current Value 和 Cycle属性,可以让产生的Nextval在一个指定的范围内循环;
可以将Nextval端口连到多个Target上,这时是阻塞式的产生序列号的,可以保证多个Target得到不同的序列号,如果想要得到相同的序列号,可以将Nextval端口连到Target之前的一个共有的Transformation上;
如果只连出Currval,得到的是一个常量,并且一次阻塞只能获得一个值,所以为性能考量,一般都不连出这个端口,如果Nextval同时有连出,这时Currval = Nextval + Increment By;
在没有配置Cycle属性时,如果序列号达到了End Value,会话会失败;
不重用的Sequence有Reset属性,启用以后,在每个会话结束时会将Current Value置为会话开始时的值,这个值是它产生的第一个值;
当Sequence配置成重用时,应该给Number of Cached Values 一个大于零的缓存值,这个值是主要为保证不出现重复数据而设置的.比如当设置为100,那么一个线程在从1开始在跑,则另外一个线程会从101开始.每次跑完都要补足100整数.
相关文章推荐
- 异步流程控制:7 行代码学会 co 模块
- Oracle创建自增字段--ORACLE SEQUENCE的简单使用介绍
- Hibernate Oracle sequence的使用技巧
- Ajax loading gif generator
- Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
- Python生成器(Generator)详解
- notes on python
- Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案
- TCP报文格式讲解
- oracle job 介绍
- EMS Data Generator for MySQL
- 诡异的ORA-02289: sequence does not exist
- System Boot Sequence
- 数据库挖掘领域的十大挑战
- userenv和sys_context函数
- oracle的sequence的使用
- ibatis中selectkey的使用
- ORACLE SEQUENCE用法
- 0x80091007 (The hash value is not correct) error when trying to deploy Windows 7 with SCCM OSD
- SCCM OSD 0x80040102