본문 바로가기
Oracle/운영

Sequence(시퀀스)

by 취미툰 2021. 8. 2.
반응형

시퀀스는 객체로써 자동으로 증가하는 숫자를 사용할 수 있습니다.

시퀀스는 순차적으로 생성되며 Unique한 속성을 가지고 있을 수 있으므로 PK같은 컬럼에 사용하기에 용이합니다.

 

생성 문법

CREATE SEQUENCE [이름]
INCREMENT BY [증감숫자] -- 양수면 증가 음수면 감소 기본 1
START WITH [시작숫자] -- 시작숫자의 최초 값은 증가일때 MINVALUE, 감소일때 MAXVALUE
MINVALUE [최솟값] 
MAXVALUE [최대값]
CYCLE OR NOCYCLE -- CYCLE : 최대값에 도달하면 최소값부터 다시 시작 /  NOCYCLE : 최대값 생성시 중지
CACHE [숫자, 생략가능] OR NOCACHE -- CACHE : 메모리에 시퀀스 값을 미리 할당 / NOCACHE 시퀀스값을 메로리에 할당하지 않음
ORDER OR NOORDER -- ORDER : 반드시 순차적으로 모두 채워서 시퀀스를 사용 / NOORDER : 시퀀스 값을 건너뛸 수 있음

 

수정 문법

ALTER SEQUENCE [시퀀스 이름]
[INCREMENT BY 증가단위]
[MAXVALUE 최대값]
[MINVALUE 최소값]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
*단 START WITH 값은 수정이 불가능합니다.

삭제 문법

DROP SEQUENCE [시퀀스 이름]

 

 

CACHE/NOCACHE 옵션

CACHE옵션을 사용하면 BUFFERS 영역에 시퀀스 값을 미리 띄어놓게되어 CPU 사용량을 줄일 수 있습니다.

RAC환경에서는 CACHE 옵션때문에 시퀀스 번호 증가 이상이 나타날 수 있습니다.

관련 내용 : https://doughman.tistory.com/11

 

[ORACLE] Sequence 증가 이상 - Cache (Last Number와 Currval 값 차이)

시퀀스가 꼬여서 순서가 이상해진 적이 있는데 nextval로 increment만큼 증가시킨 값을 가져오니 그럴 일이 없었다.. 확인해보니 currval와 sequence의 last number 값이 20정도 차이가 났는데 해당 sequence의 '

doughman.tistory.com

ORDER/NOORDER

ORDER는 반드시 숫자를 모두 채워서 시퀀스를 사용해야 하는 옵션입니다.

NOORDER는 빈값이 있을 수 있습니다.

순차적으로 모든 숫자가 빠짐이 없어야할 경우 ORDER 옵션을 넣어야 RAC구성에서 시퀀스가 빠짐없이 순서를 지킬 수 있습니다.

 

 

출처 : https://subbak2.tistory.com/16

 

[Oracle] 시퀀스의 옵션에 담긴 의미

1. 시퀀스(Sequence)란? 시퀀스란 영어로 '순서'라는 의미를 갖고 있다. 오라클에서는 시퀀스를 객체로 사용해 자동으로 증가하는 숫자를 사용하는데 이용한다. 2. 시퀀스가 필요한 이유 예를 들어

subbak2.tistory.com

 

※CACHE/ORDER 옵션 유무에 따른 결과차이 테스트

https://bae9086.tistory.com/297

 

시퀀스(Sequence) Cache 옵션 유/무 , Order 옵션 유/무 테스트

바로 지난번 글에 시퀀스에 대한 기초적인 개념과 옵션에 대한 설명을 포스팅했습니다. 사실 이번 글을 위해서 지난 개념을 정리한 것이라고 볼 수 있는데요, 멀티 인스턴스(예 RAC)기반에서 시

bae9086.tistory.com

 

반응형

댓글