[DB / MySQL] Auto increment vs UUID

귀찮Lee·2023년 3월 7일
0

DataBase / MySQL

목록 보기
15/16

◎ DB에서 PK 생성 방법

  • DB에서 Primary Key

    • 한 개 혹은 여러 개의 칼럼으로 테이블 내의 각 행들을 구별하기 위한 목적
    • 그 자체만으로 Unique 하며 만약 여러 개의 Column이 PK로 묶여 있다면, 해당 값들의 조합이 반드시 Unique 해지게 된다.
    • 특징 : NOT NULL & UNIQUE
  • PK는 여러가지 생성방법을 가질 수 있다.

    • NOT NULL & UNIQUE한 방법이라면 크게 문제되지 않는다.
    • MySQL에서 대표적인 PK 생성 방법에는 Auto increment, UUID가 있다.

◎ Auto Increment

  • 1부터 시작해서 숫자를 늘려가거나, 원하는 숫자의 식별자를 만들어내는 방식
  • 프로그램적으로 문제가 없는 한, 유일을 보장
  • Auto increment를 사용할 경우 일반적으로 INT 타입을 사용함

◎ UUID (Universally Unique IDentifier)

  • 128비트의 값으로 32개의 문자와 4개의 하이픈(-)으로 구성 (형태 : 8-4-4-4-12)
  • 중복될 가능성이 매우 희박해 널리 사용되는 식별자의 한 종류
  • 반드시 유일성을 보장하지는 않음
  • 16 바이트의 문자로 이루어짐 (10의 38승 단위로 생성)
  • UUID를 쓸경우 BINARY(16)이나, VARCHAR를 사용함

◎ MySQL의 관련 특징

  • MySQL에서 인덱스 (클러스터 인덱스, 세컨더리 인덱스)에는 모두 Primary Key를 가지고 있다.

    • PK가 차지하고 있는 공간이 크다면 전반적으로 차지하는 공간이 매우 클 것이다.
    • 일반적으로 UUID가 Auto Increment 방식보다 차지하는 공간이 더 크다.
  • MySQL에서 클러스터 키를 PK로 사용하고 이에 따라 데이터 위치가 바뀐다.

    • Auto Increment : 값이 크기 순서대로 들어가기 때문에 데이터 주소가 옮겨질 일이 적다.
    • UUID : 들어가는 값의 순서가 달라질 수 있기 때문에 데이터 주소가 계속 밀릴 수 있다.

◎ MySQL에서 Auto Increment, UUID 장단점 비교

구분Auto IncrementUUID
장점- 빠르다
- key를 한눈에 보기 쉽다.
- UUID를 어디서든지 만들고 고유성을 보장할 수 있어 분산 시스템에 용이하다.
단점- 분산 시스템에 적합하지 않다. (서로 다른 DB에 저장하는 key가 같은 데이터를 처리하기 힘듦)
- 키를 예측하기 쉽다.
- 성능의 저하를 일으킨다 (클러스터 인덱스의 정렬 비용이 많이 든다)
- 사람이 보기 힘들다.
- 필요 이상으로 공간을 많이 차지한다.
profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글