공통 규칙
세컨더리 인덱스 리프에는
인덱스키 + PK
가 함께 들어갑니다.
따라서 PK가 커질수록 모든 세컨더리 인덱스 엔트리도 함께 커지고, 그 영향이 페이지 밀도와 트리 높이까지 이어집니다.
비교 기준
권장
INT / BIGINT PK
주의
UUID PK
리프 엔트리
[
index key
PK 4B
]
작은 PK가 붙으므로 엔트리 자체가 가볍습니다.
[
index key
PK 36B
]
같은 인덱스키라도 PK가 길어져 리프 엔트리가 크게 늘어납니다.
페이지당 엔트리
더 많이 저장
-> 같은 페이지에 더 많은 리프 엔트리
저장 수 감소
-> 페이지를 더 빨리 추가로 사용
삽입 패턴
→
AUTO_INCREMENT 중심의 순차 삽입
→
페이지 분할이 적고 정렬 유지가 쉽습니다.
→
UUID 중심의 랜덤 삽입
→
페이지 분할이 잦고 쓰기 비용이 커집니다.
최종 영향
트리 높이 낮게 유지
세컨더리 인덱스가 더 조밀해져 조회와 유지 비용이 안정적입니다.
트리 높이 증가
인덱스 크기 증가 + 페이지 분할 빈번 -> 읽기와 쓰기 성능이 함께 불리해집니다.
추천:
InnoDB에서는
작고 순차적인 PK
가 유리합니다. AUTO_INCREMENT
INT/BIGINT
는 세컨더리 인덱스를 더 조밀하게 유지하고, UUID PK는 큰 엔트리와 랜덤 삽입 때문에 성능 부담을 키웁니다.