채번방식 3가지

Inyeob Kim·2023년 3월 12일

1) 채번 테이블

채번 테이블을 사용하여 키값을 가져오는 방식은 추천할만한 방법은 아니다. 특히 키값이 건너뜀 없이 순차적으로 발행되어야 하는 업무요건이라면 채번 트랜잭션과 메인 트랜잭션이 분리될 수 없기 때문에 심한 Lock 경합을 피할 수 없을 것이다. 이런 업무요건은 heavy 한 동시트랜잭션 환경에서는 받아들일 수 없는 것이다. 키값이 건너뛰어 발행되도 괜찮다면 채번 트랜잭션은 메인 트랜잭션으로부터 분리하여 Lock 경합을 최소화하여야 한다.

처리방법

  • 채번 테이블 이용

장점

  • DUP에러(Data Duplication Error) 없음
  • 일련번호 체계 가능

단점

  • LOCK 유발
  • 성능 저하
  • 관리 항목 증가

2) 테이블 최대값 적용

MAX + 1은 현재 가장 큰 값에 + 1을 시켜주는 것이기 때문에 중복이 될 확률이 높다. (동시성 보장 X)

처리방법

INSERT INTO 테이블(일련번호, COL2, COL3 ...)
SELECT DECODE(MAX(번호), NULL, 1, MAX(번호)+1) 일련번호
FROM 트랜잭션 WHERE ROWNUM = 1

장점

  • 관리 항목 증가 없음
  • 빠른 성능
  • 일련번호 체계 가능

단점

  • 이론적 DUP 에러 가능(중복 채번될 가능성 존재)

3) 시퀀스 오브젝트 이용

시퀀스는 크리티컬 세션이 보장되기 때문에 절대 데이터의 중복처리가 되질 않는다.

처리방법

create sequence table_seq
	   increment by 1
       start with 1
       maxvalue 1000000000
       cache 30;

장점

  • 빠른 성능
  • DUP에러 없음
  • LOCK 없음

단점

  • 관리 항목 증가
  • 일련번호 체계 불가능
profile
코어뱅킹 주니어 개발자

0개의 댓글