我创建了一个Oracle序列:
非常感谢您的帮助。
CREATE SEQUENCE seq_acteurs START WITH 1 INCREMENT BY 1;
通常情况下,序列应该每次增加1,但是当插入Acteurs
表时,序列s
会增加50!这似乎不合逻辑。为什么会这样呢?非常感谢您的帮助。
CREATE SEQUENCE seq_acteurs START WITH 1 INCREMENT BY 1;
通常情况下,序列应该每次增加1,但是当插入Acteurs
表时,序列s
会增加50!这似乎不合逻辑。为什么会这样呢?当您需要时,序列号不会逐个获取。通常,数据库会在内存中缓存一定数量的序列号。当所有缓存的序列号都被使用后,数据库会将一个新的序列号块提取到缓存中。如果数据库在缓存仍有未使用的序列号时崩溃,则序列号可能存在间隙。
allocationSize=1
这是一个例子:
@SequenceGenerator(name = "ECP_EVALUACION_SEQ", sequenceName = "SCORTN.ECP_EVALUACION_SEQ",allocationSize=1)
序列不能保证生成不间断的数字序列。
您可以通过指定nocache
来最小化间隔,但这仍然不能保证不间断的序列,并可能会创建资源争用。
以下是来自文档的示例:
CREATE SEQUENCE customers_seq START WITH 1000 INCREMENT BY 1 NOCACHE NOCYCLE;