[ DB / Oracle ] 시퀀스 옵션 'NOCACHE'

2024. 1. 12. 20:21· LANGUAGE/└ Database

사용 환경 :  DBeaver

 

 

 Oracle 데이터베이스에서 NOCACHE 옵션은 시퀀스 번호를 미리 할당하고 메모리에 저장하지 않도록 지정하도록 사용한다. NOCACHE 옵션은 시퀀스에서 새로운 값을 요청할 때마다 Oracle은 캐시를 참고하지 않고 직접적으로 다음 값을 생성하고 반환합니다. 다시 말해 빈번하게 INSERT를 하게 되는 테이블의 경우 과도한 CPU 사용을 방지할 수 있습니다. 즉, 메모리를 절약할 수 있습니다.

 

 NOCACHE 옵션을 사용하여 시퀀스를 만들면, 각 값이 요청될 때마다 시퀀스를 1씩 증가시키고 해당 값을 제공한다. 이는 트랜잭션이 롤백될 수 있는 상황에서 캐시된 값이 손실될 수 있는 상황에서, 값의 시퀀스에 간격이 없도록 보장하고자 할 때 유용할 수 있다.

 

NOCACHE 옵션을 사용하여 시퀀스를 만드는 예

CREATE SEQUENCE my_sequence
  START WITH 1			--시작할 숫자
  INCREMENT BY 1		--증감숫자
  NOCACHE
  NOCYCLE;			-- 순환 x (재사용 X)

 

    (+) 캐싱이 비활성화 되어 있음을 나타냄

    (+) 각 NEXTVAL 요청은 미리 할당된 캐시를 사용하지 않고, 시퀀스를 직접적으로 증가시킴

    (+) 장점 : NOCACHE를 사용하면 시퀀스 간격을 방지할 수 있음

         단점 : 시퀀스 값에 대한 경합이 높은 상황에서 성능에 영향을 줄 수 있음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

개인 공부 기록용입니다 :) 

CHAT GPT 답변을 활용하여 정리하였습니다.

728x90