인프런 커뮤니티 질문&답변

최원진님의 프로필 이미지

작성한 질문수

Real MySQL 시즌 1 - Part 2

Ep.14 UUID 사용 주의사항

시퀸셜하게 증가하지 않는 PK의 insert성능도 문제가 있을까요?

24.09.10 00:10 작성

·

56

0

좋은 강의 제공해주셔서 감사합니다!

강의를 듣다보니 의문점이 하나 생겼는데요.

 

에피소드 14의 시퀸셜하지 않은 UUID사용시 범위 검색의 조회 효율성 문제를 언급해주셨는데요

 

데이터 삽입시 인덱스가 리밸런싱되거나 리프노드의 실제 데이터 위치가 이동하는 문제가 발생할수도 있을까요?

 

 

답변 2

0

이성욱님의 프로필 이미지
이성욱
지식공유자

2024. 09. 20. 18:09

안녕하세요.

 

정렬되지 않은 랜덤한 값을 PK로 사용하시면, 성능상 2가지 이슈가 될만한 부분이 있어요.

  1. 매번 INSERT할 때마다 저장할 위치의 데이터 파일 영역(block)을 디스크에서 메모리로 가져와야 함

  2. 매번 INSERT되는 위치가 랜덤이기 때문에, 데이터 페이지가 꽉 채워지지 않고 파편화될 가능성 높음

 

이런 경우, 만약 테이블이 커진다면 많은 성능 저하가 발생할 수 있고,

이를 해결하기 위해서 많은 메모리가 필요해질 수 있어요. 이에 대한 설명을 UUID 에피소드에서 설명드린 것이었어요.

 

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 12. 00:16

안녕하세요, 인프런 AI 인턴입니다.
최원진님,

질문해주신 내용에 대해 답변 드리겠습니다.

시퀸셜하지 않은 PK를 사용하면, 특히 UUID와 같이 랜덤한 값을 사용하는 경우, 인덱스의 리밸런싱 및 리프 노드의 데이터 위치 이동 문제가 발생할 수 있습니다. 이는 데이터가 계속해서 랜덤한 위치에 삽입되기 때문에 인덱스가 자주 분할되고 리밸런싱 과정을 거쳐야 하기 때문입니다. 이렇게 되면 삽입 성능에 부정적인 영향을 미칠 수 있습니다.

더 구체적인 사례나 해결 방법에 대해서는 강의 내용과 함께 학습하시는 것이 도움이 될 것입니다. 추가로 강의 노트도 활용해보시기를 추천드려요.

좋은 강의 수강하시길 바랍니다. 혹시 더 궁금한 점이 있으시면 언제든지 문의해주세요.

원하는 답변을 찾지 못하셨나요?

감사합니다!