AUTO ID

자동 증가는 순번보다 고유성과 동시성을 해결한다

여러 세션이 동시에 INSERT해도 같은 기본키가 나오지 않도록 DBMS가 번호 발급을 맡는다. 번호 공백은 실패가 아니라 발급 방식의 결과일 수 있다.

1. 동시에 INSERT

여러 요청이 새 행을 거의 동시에 저장하려고 한다.

2. 발급기 통과

시퀀스, 카운터, IDENTITY가 원자적으로 새 값을 낸다.

3. PK에 저장

행마다 다른 ID가 들어가고 PK/UNIQUE가 충돌을 막는다.

DBMS 방식 설계 포인트
Oracle SEQUENCE 테이블 밖 발급기를 만들고 NEXTVAL로 호출한다
MySQL AUTO_INCREMENT ID 컬럼을 생략하면 해당 테이블 카운터가 값을 채운다
PostgreSQL IDENTITY 컬럼 선언처럼 보이지만 내부적으로 시퀀스가 동작한다

금지 패턴: MAX(id)+1은 동시 삽입에서 중복 위험이 크다. 기본키 값은 DBMS 발급기에 맡긴다.