db pk autoincrement vs uuid #758
yoonminsang
started this conversation in
Today I Learned
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
처음에 공부할때는 보통 db pk로 autoincrement를 사용한다. 근데 어느순간 autoincrement의 문제점을 깨닫는다. 유저에게 노출되지 않는다면 상관없지만 유저에게 id가 노출되는 경우 현재 몇개의 데이터가 생성되었는지 알게되고 이는 경쟁사에서 데이터 분석을 할 수도 있고 무단 접근도 더 쉬워진다. 그래서 uuid를 사용하는 경우도 있다. 과거에는 시간정렬이 어려웠지만 uuid v7부터는 시간정렬도 가능하다. 이로인해 b-tree 인덱스접근 속도 차이도 거의 없어졌다.
그러면 이제 유저에게 노출되는 id가 필요한 db는 무조건 uuid로 변경하는게 좋은걸까? 하나 걸리는건 저장공간이 더 길어지고 url도 길어진다는 것이다.(약간이지만 성능문제도 존재)
그래서 claude에게 100만 MAU, 100만 유저정도로 가정하고 성능비교를 해달라고 했다. 결론은 그냥 uuid를 사용하라고 한다. 여전히 autoincrement 많이 사용하는 것 같은데.. 음.. 잘 모르겠다. 나중에 백엔드 개발자에게 물어봐야겠다.
저장 공간
성능 차이
삽입 성능:
조회 성능:
100만 MAU 규모에서:
실무 경험상
결론: 네 규모에서는 UUID v7 써도 성능상 전혀 문제없어. 오히려 보안, 분산 생성, 마이그레이션 용이성 등의 장점이 미미한 성능 차이를 압도해. 저장 공간 12MB 더 쓰는 건 2024년 기준으로는 고민할 가치도 없는 수준이고.
진짜 성능 병목은 보통 복잡한 조인, 인덱스 설계 미스, N+1 쿼리 이런 데서 나와. PK 타입은 거의 영향 없어.
All reactions