pk를 auto increment로 하는것에 대해서
2
6 câu hỏi đã được viết
안녕하세요 질문이 있습니다. b+트리 강의를 들으면서 문득 생각이 나서 질문드립니다.웹개발을 하는 회사원인데요 저희 회사에서는 pk를 랜덤 UUID를 사용해서 pk를 사용하고 있는데 프로젝트를 하면 마이그레이션을 하거나 할떄 꽤 많은 양을 합니다 수십만건 또는 수백만건 정도를 하는데 이 pk를 auto increment로만 바꿔도 성능이 많이 개선이 되나요?
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. 안태승님
UUID와 AUTO_INCREMENT PK의 성능 차이에 대해서는 아래 기존 답변이 관련성이 높습니다.
UUID 질문 드립니다.
랜덤 UUID를 B+트리의 PK로 사용하면 삽입 위치가 분산되어 페이지 분할과 인덱스 캐시 효율 저하가 발생할 수 있습니다. 반면 AUTO_INCREMENT는 값이 순차적으로 증가하므로 일반적으로 PK 인덱스의 삽입 효율과 데이터 적재 성능이 더 유리합니다.
다만 수십만~수백만 건의 마이그레이션 성능이 얼마나 개선되는지는 다음 요소에 따라 달라집니다.
- UUID를 문자열(
CHAR,VARCHAR)로 저장하는지, 바이너리 형태로 저장하는지
- PK가 클러스터드 인덱스로 동작하는지
- PK 외에 존재하는 보조 인덱스 개수
- 한 번에 처리하는 배치 크기와 트랜잭션 범위
- 마이그레이션 쿼리 및 디스크 I/O 병목 여부
따라서 AUTO_INCREMENT로 변경하면 인덱스 삽입 측면에서는 개선될 가능성이 높지만, 실제 개선 폭은 실행 계획과 처리 시간을 직접 비교해 확인하는 것이 좋습니다. 또한 외부에 PK를 노출하여 순번 추측을 막아야 한다면, 내부 PK는 AUTO_INCREMENT로 두고 외부 식별자용 UUID를 별도 컬럼으로 관리하는 방식도 고려할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
슈퍼키 문의
0
8
1
질문있습니다!
0
9
1
트랜잭션 내 Redis I/O 에 대한 궁금한점
1
18
1
3-13 리텐션 과제 제출합니다!
0
56
2
getOrCreate / Unique? 멱등 처리 질문
1
59
2
경쟁상태
0
48
1
stmt
0
40
1
실행 통계2 explain analyze 조인 쿼리
0
42
1
3강 인덱스 구조 강의 자료 문의
1
52
1
key_length 가 사용되는곳
0
44
1
강의 DB데이터 질문
0
60
1
기타 영역 중 언두로그
0
86
1
실전튜닝 4 질문 - group by 순서와 index 순서
0
66
1
DB 쿼리 최적화 시 DB 처리와 애플리케이션 처리의 기준이 궁금합니다
0
63
1
실무에서의 인덱스 관리 방법이 궁금합니다
0
75
1
복합인덱스 설계 질문
0
127
1
이진 트리 노드
0
79
1
통계정보 갱신 질문
0
114
2
PK 관련하여 궁금한 점이 있어서 질문 드립니다.
0
121
2
탐색을 한번 더 하지 않게 하는 방식 중 어댑티브 해시 방식도 맞는지 궁금 합니다.
0
118
2
컬럼 크기가 대용량인 경우 DB 버퍼 풀에 전부 올라오는지 궁금합니다
0
116
2
실습데이터 ORDERS 생성 시간 질문요...
0
154
3
MySQL 서버구조 쿼리파서 질문 있습니다 !
0
104
1
Postgresql 아키텍처 업데이트
1
123
2

