定义:
就是说在序列使用之前,已经在内存里面生成了的为用户提供的一系列的序列号(Oracle默认是20个)。并非随用随取,而是已经准备好了的。
作用:
当发生大量并发请求申请序列时,为了避免性能瓶颈,Oracle允许用户提前生成 x 个序列号存放在内存中,当NextVal = x + 1 时,Last_Number = (x + 1) + x。
创建:
CREATE SEQUENCE sequence_name
[INCREMENT BY step_value] //步长
[START WITH start_value] //初值
[MAXVALUE max_value | NOMAXVALUE] //最大值
[MINVALUE min_value | NOMINVALUE] //最小值
[CYCLE | NOCYCLE] //是否循环
[CACHE cache_value | NOCACHE] //内存块的大小,默认20,即存放20个序列值。
注:
如果设置了缓存,当不小心出现问题导致数据库关闭时,缓存的数据可能就会消失,只会记得最后一个值(即Last_Number)。以默认cache 20为例:假设NextVal增长到21(此时的Last_number = 41),突然电脑罢工了,那缓存的东西就不在了,下次再开始时就会从41+1开始存入cache_value=20个序列。