RDB 관점에서 UUID 의 단점
MySQL 을 사용하고 있는데, UUID 를 사용하면서 성능이슈를 겪은바 있다. 조회 할때도, 조인 할때도 성능이 좋지 않았다. (다른 RDBMS 는 다른결과일수 있다.)UUID는 다음과 같은 단점이 있기때문.상대적으로 큰 크기 (36byte. bigint 는 8byt
2022년 11월 26일
MySQL 을 사용하고 있는데, UUID 를 사용하면서 성능이슈를 겪은바 있다. 조회 할때도, 조인 할때도 성능이 좋지 않았다. (다른 RDBMS 는 다른결과일수 있다.) 정확히 어떤 시나리오였는지는 기억이 나지 않지만 "이래서 uuid 쓰겠나" 싶을 정도로 처참하게 느렸었다.
왜 이런지 접근해보려면, UUID는 단점부터 정리해 보자.
- 상대적으로 큰 크기 (36byte. bigint 는 8byte)
- B-tree 인덱스 관점에서 우편향적이지 않고 랜덤 증가하면서 잦은 페이지 분할 및 재정렬 발생
- 이로 인한 낮은 버퍼 히트율 (disk, cpu, memory 모두 낭비가 심한편)
랜덤한 문자열이라는 특징이 보인다. 헌데 순차적인 UUID 있고, 실제로 확실한 성능개선이 있어 보인다는 포스팅을 발견했다.
현재는 인크리먼털한 id 와 UUID 를 별도의 unique 식별자로 두고 있는데, 잘하면 id 는 제거할수 있지 않을까?