Oracle - sequence认识

一、之前认识

之前对sequence的 cache的理解,是oracle分配的内存,但却始终没明白实质。

 

 

 

 

二、所遇情况

数据表里用到sequence,sequence是这样定义的

 

-- Create sequence 

create sequence TEST

minvalue 10000

maxvalue 9999999

start with 10962

increment by 1

cache 20;

 

 

通过PL/SQL观察看到,TEST sequence显示 next number 显示 10962,

而通过查询TEST sequence的current value 是 10942,

可TEST sequence定义的是 increment by 1,不知道为什么会相差20,

直到今天才真正明白cache的意思。

 

 

 

 

三、最终认识

Cache 参数:

如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。

使用cache或许会跳号,比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。但是nocache 的性能较差。 如果指定cache而没有设定cache值,默认cache是20个。 这个默认值对于大多数情况下都是够用的。 除非那种每秒上万次的select。

 

 

原来next number显示的值,是依据cache来显示的;

而实质应用中,next value 的确是increment by 1 ,所以下次取值时,会是10943;

应用每次取值,next number 同样也会加 1 ,但是始终会和current value保持相差20(cache 里定义的值).

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值