ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SEQUENCE序列的使用

SEQUENCE序列的使用

原创 Linux操作系统 作者:andyann 时间:2011-11-22 15:37:52 0 删除 编辑
1、序列的创建:

CREATE SEQUENCE SEQUENCE_NAME
    INCREMENT BY n  
    START WITH n  
    MAXVALUE n | NOMAXVALUE  
    MINVALUE n | NOMINVALUE  
    CYCLE | NOCYCLE  
    CACHE n | NOCACHE | ORDER;

相关参数说明:
INCREMENT BY n 序列递增幅度
START WITH n      序列开始值
MAXVALUE n        序列最大值
MINVALUE n         序列最小值
CYCLE                 序列序号循环使用
CACHE n              序列序号缓存个数,默认20个,默认NOORDER模式。
CACHE n ORDER  在RAC中共用一个SEQUENCE的CACHE,NOORDER不共用CACHE。

数据字典:user_sequences,all_sequences,dba_sequences

SELECT * FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'SEQUENCE_NAME';

2、序列的管理:

可以修改的值:增幅、最大值、最小值、循环使用、缓存。
不能修改的值:开始值。
修改开始值必须删除重建。

ALTER SEQUENCE SEQUENCE_NAME
   INCREMENT BY n
   MAXVALUE n
   MINVALUE n
   CYCLE
   CACHE n;

删除以及授权:

DROP SEQUENCE sequence_name;
GRANT SELECT ON sequence_name TO user_name;
GRANT ALTER ANY SEQUENCE;


3、序列的使用:

NEXTVAL 下一个序号
CURRVAL 当前的序号

例:
SELECT sequence_name.nextval FROM dual;
SELECT sequence_name.currval FROM dual;

发生回滚后,序列不能回滚,会发生序列号不连续的情况。

4、Cache设置注意事项:

NOCACHE不会造成序列跳号,但是并发性能比较差,会造成row cache lock等待事件。
在RAC环境中SEQUENCE CACHE适量的设置大一点,避免序列竞争导致,如每秒会有上万次SELECT,
并发量很大cache需要设置为100甚至1000以上。

不同cache模式的等待事件:
NOCACHE                     --> row cache lock
CAHCE+NOORDER       --> enq: SQ-contention(SQ lock)
CACHE+ORDER(RAC)   --> DFS look handle(SV lock)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24070945/viewspace-711771/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-24

  • 博文量
    25
  • 访问量
    89350