详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题

详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题概述所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。

欢迎大家来到IT世界,在知识的湖畔探索吧!

概述

所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。序列(Sequence)是用来生成连续的整数数据的对象,常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。


语法结构:创建序列

CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVALUE num|NOMAXVALUE] [MINVALUE num|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE num|NOCACHE] 

欢迎大家来到IT世界,在知识的湖畔探索吧!

语法解析:

① START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。

② INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。

③ MAXVALUE:指最大值。

④ NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。

⑤ MINVALUE:指最小值。

⑥ NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。

⑦ CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。

⑧ NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。

⑨ CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。

⑩ NOCACHE:不预先在内存中生成序列号。


实例:创建序列

需求:创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。

实现:

欢迎大家来到IT世界,在知识的湖畔探索吧!SQL> CREATE SEQUENCE MYSEQ MINVALUE 1 START WITH 1 NOMAXVALUE INCREMENT BY 1 NOCYCLE CACHE 30 / 

序列创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值。

详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题


实例:序列使用

SQL> SELECT MYSEQ.NEXTVAL FROM DUAL; SQL> SELECT MYSEQ.CURRVAL FROM DUAL; 
详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题


实例:序列修改和删除

使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:

1. 不能修改序列的初始值。

2. 最小值不能大于当前值。

3. 最大值不能小于当前值。

使用DROP SEQUENCE命令可以删除一个序列对象。

欢迎大家来到IT世界,在知识的湖畔探索吧!SQL> ALTER SEQUENCE MYSEQ MAXVALUE 10000 MINVALUE -300 / SQL> DROP SEQUENCE MYSEQ; 
详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题


在RAC环境中,序列的Cache问题可能会对性能有着决定性的影响,缺省的序列Cache值为20,这对RAC环境远远不够。如果存在序列号使用的竞争,就可能在数据库中看到明显的队列等待:enq: SQ – contention

在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这些值在客户的环境中都有采用。基本上cache 大于20的时候性能基本可以接受,最好设置100以上,nocache的时候性能确实很差,最大相差20倍.

后面会分享更多DBA方面的内容,感兴趣的朋友可以关注一下~

详解Oracle数据库中序列的使用及RAC中的Sequence Cache问题

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/77336.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信