Auto Increment 와 UUID 각각의 이점에 대하여

Primary Key

관계형 데이터베이스에서 레코드의 식별자로 이용하기에 가장 적합한 것을 테이블마다 선택, 정의된 후보 키를 말한다

Primary Key 의 종류

  • Nature Key

    자연 키는 이미 자연스럽게 주어지는 키로써, 휴대폰 번호, 주민등록번호 등이 있다.

  • Artificial Key

    인조 키는 인위적으로 생성한 키로써 테이블 자체의 고유한 식별자에 해당하는 값이 없거나 해당 값이 너무 길어서 사용하기 적절하지 않을 때 사용할 수 있다.

이 인조키 생성 방식의 종류로 Auto Increment 와 UUID 가 있다. 각각의 이점은 다음과 같다.

1. Auto Increment 방식의 장점

  • 1-1. 메모리를 덜 차지한다.

  • 1-2. 클러스터 인덱스 기반의 정렬 수행 시 UUID 에 비해 performance 가 높다.

  • 1-3. UUID 에 비해 직관적이다. 예를 들어, (1, 2, 3, 4, 5) (ab123e, ac9dp, cb192, cf375) 이렇게 두 가지 형태로 데이터가 있을 때 전자가 정렬되어 있다는 것을 훨씬 더 직관적으로 알아챌 수 있다.

1-2. 정수 타입 비교 vs 문자열 비교 실제 성능 측정

../assets/img.png

2. UUID 방식의 장점

  • 2-1. Auto Increment 방식에 비해 분산된 환경 (예를 들어, 물리적으로 분리된 두 개의 데이터베이스 서버) 에 테이블을 저장하는 것이 용이하다.

  • 2-2. 데이터베이스 환경에 독립적이다. Auto Increment 방식의 경우 해당 기능을 제공하지 않는 db 로 이전하는 데에 어려움이 있겠으나
    UUID 는 훨씬 더 범용적이다

  • 2-3. 투명성이 보장된다. Auto Increment 방식의 키와 달리 실제 키 값을 유추하기 힘들다.

참고 자료

UUIDs are Popular, but Bad for Performance — Let’s Discuss

Auto increment keys vs. UUID

comments powered by Disqus