Oracle 18c에서 Scalable Sequence(확장 가능한 시퀀스)는 대량의 트랜잭션이 발생하는 환경에서 시퀀스 생성의 성능을 향상시키기 위해 도입된 기능입니다. 이는 특히 다중 노드 RAC(Real Application Clusters) 환경이나 병렬 트랜잭션이 많은 OLTP(Online Transaction Processing) 시스템에서 성능 병목을 줄이는 데 도움이 됩니다.
Oracle에서 시퀀스는 NEXTVAL을 호출할 때 단일 시퀀스 객체를 공유하는 방식으로 동작합니다. 하지만, 다중 세션에서 동시 접근할 경우 잠금 경합(latch contention)이 발생하여 성능 저하가 일어날 수 있습니다.
Oracle 18c에서는 SCALABLE 옵션을 사용하여 이러한 경합을 최소화하고, 빠르고 확장 가능한 시퀀스 생성을 가능하게 합니다.
Oracle 18c에서 Scalable 시퀀스를 생성하려면 SCALE 키워드를 추가하면 됩니다. (또는 SCALE EXTEND )
CREATE SEQUENCE scalable_seq
START WITH 1
INCREMENT BY 1
SCALE; SCALE: 시퀀스를 확장 가능한 방식으로 생성 (SCALE EXTEND 키워드로도 사용 가능)START WITH 1: 시퀀스 시작 값INCREMENT BY 1: 1씩 증가NEXTVAL 호출 시, 단일 시퀀스 객체에서 값을 가져오지만, Scalable Sequence는 여러 세션이 동시에 시퀀스 값을 증가시킬 수 있도록 최적화됩니다.SCALE을 적용하면 자동으로 NOORDER 및 NOCACHE가 활성화됩니다.NOORDER: 시퀀스 값이 순차적이지 않을 수도 있음.NOCACHE: 캐싱을 비활성화하여 각 세션이 개별적으로 시퀀스를 관리.SCALE을 사용하면 순서가 보장되지 않습니다.1001 → 1002 → 1003이 아닌 1001 → 1050 → 1020 등으로 증가할 수 있음)SCALE 옵션이 설정된 시퀀스는 CYCLE 옵션과 함께 사용할 수 없습니다.SCALE을 사용하면 자동으로 NOCACHE가 적용됩니다.-- 확장 가능한 시퀀스 생성
CREATE SEQUENCE my_scalable_seq
START WITH 1
INCREMENT BY 1
SCALE;
-- 시퀀스 값 가져오기
SELECT my_scalable_seq.NEXTVAL FROM dual; | 기능 | 기존 시퀀스 | Scalable 시퀀스 |
|---|---|---|
| 성능 | 동시 트랜잭션 증가 시 경합 발생 | 동시 트랜잭션에서도 경합 최소화 |
| 순차성 | 순서 보장 | 순서 보장 안됨 (NOORDER) |
| 캐싱 | CACHE 사용 가능 | NOCACHE (자동 설정) |
| RAC 지원 | 가능하지만 경합 발생 가능 | RAC 환경에서 성능 최적화 |
| CYCLE 지원 | 가능 | 불가능 |
🔹 Oracle 18c에서 Scalable Sequence를 활용하면 성능을 최적화하면서도 경합을 줄일 수 있으므로, 특정 워크로드에 맞게 도입을 고려해보는 것이 좋습니다! 🚀
SQLD에서 점수를 가르는 건 어려운 이론보다 NULL 처리, 조인 조건 위치, 윈도우 함수의 동작 같은…
AI 이미지 생성 도구의 폭발적 보급으로 그래픽·콘텐츠 디자이너 일감이 실제로 줄고 있습니다. 어떤 직군이 먼저…
전기차 시장이 배터리 싸움에서 소프트웨어 전쟁으로 전환됐다. 테슬라의 AI·데이터 해자 vs 현대차의 SDV 전략, 진짜…
어제 미국에서 9월 생산자물가지수(PPI)가 나왔는데 숫자가 꽤 거칠었습니다. 그런데 간밤 뉴욕증시 3대 지수는 모두 올랐습니다.…
가계대출이 오랜만에 줄었다는 소식에 대출 문턱이 낮아지는 거냐고 묻는 분들이 많습니다. 금융당국이 10월 15일 발표한…
어제 코스피가 하루에 7% 넘게 빠졌다는 소식, 아침에 확인하고 놀라신 분들 많으실 텐데요. 그런데 밤사이…