oracle的sequence跳号,而且间隔逐渐增大,能取到1,2,4,7,11...会是什么原因?

2024-12-22 21:56:14
推荐回答(2个)
回答1:

在创建sequence时有个cache,比如cache 20 会先创建20个序列,以此来提高效率,要不然会每次插入数据时都去创建你需要的id,当经常插入数据时效率较低,所以oracle有这种机制,但是当你关闭数据库时,那20个序列号没用完,下次再插入数据时,他会从21开始创建,所以会不连续,
create sequence SEQ_EMP_NO
minvalue 10001
maxvalue 99999999
start with 10001
increment by 1
cache 20;

回答2:

1楼正解,还有一种可能是你的事务回滚了,这个号没用上,下一个事务会重新申请一个号