inflearn logo
강의

Khóa học

Chia sẻ kiến thức

MySQL thực sự Phần 1 - Phần 2

Tập.14 Lưu ý khi sử dụng UUID

primary key에 시간, uuid로 복합키로 설정하는 경우

Đã giải quyết

325

seijin07229272

19 câu hỏi đã được viết

0

안녕하세요!
좋은 강의 감사합니다!

이력 테이블의 대용량 데이터를 저장하기 위해

pk값 설정 시 정수형은 제한이 있다고 생각해서

시간+uuid로 복합키를 설정하려고 하는데요! 레인지 파티션도 사용하려구 하구요! 이렇게 할 경우 결국엔 String타입으로 저장되서 클러스터링 인덱스가 제대로 저장이 될까? 고민이 있었는데요!

이런 고민을 갖고 강의를 보게 되었는데, 강의 내용을 참고해보면

uuid값이 정수형보다 길어서 pk로 사용할 경우

메모리를 많이 차지해서 메모리크기가 큰 인스턴스를 사용해야 하므로 비용처리가 드는걸로 이해했습니다.

uuid대신 snowflake나 sonyflake 라이브러리로 대체하는게 더 좋다고 말씀해주셨는데, 해당 라이브러리가 망하거나(?) 제대로 작동을 안할경우의 위험성도 고려해봐야할것 같다는 생각이 들어서요! 제가 요 라이브러리는 잘 몰라서 여쭤보고자합니다!

그래서 질문은 아래 3가지 입니다!

Q1. 시간+uuid로 복합키로 pk를 설정하거나, 애플리케이션단에서 시간+uuid만든 String 타입을 pk를 설정하는것보다, snowflake 라이브러리 하나만 사용하는게 더 메모리가 효율적인게 맞을까요?

Q2. snowflake가 실제로 현업에서도 많이 쓰이는지 해당 라이브러리가 추후에 제대로 작동을 안할 경우에는 어떻게 대처를 해야 하는지 궁금합니다!

Q3. 추가적으로 uuid관련 내용이 Real Mysql 2권 중 어디에 있는지도 궁금합니다! 목차에서는 찾을 수가 없어서요 ㅠㅠ

mysql dbms/rdbms backend query-tuning mysql-query

Câu trả lời 2

1

sungucklee2062

세진님, 안녕하세요.

 

uuid대신 snowflake나 sonyflake 라이브러리로 대체하는게 더 좋다고 말씀해주셨는데, 해당 라이브러리가 망하거나(?) 제대로 작동을 안할경우의 위험성도 고려해봐야할것 같다는 생각이 들어서요! 제가 요 라이브러리는 잘 몰라서 여쭤보고자합니다!

Snowflake UID 라이브러리는 망해도 그 코드는 그대로 사용하시면 됩니다. Snowflake를 만든 회사를 믿고 사용하는 것이 아니라, In-House로 개발하는 시간을 단축하기 위해서 snowflake Uid를 사용하는 거라 보시면 됩니다. 이 라이브러리는 매우 매우 단순하고, 이미 많은 회사들에서 사용하고 있기 때문에 지금 코드의 안정성을 걱정하진 않으셔도 될거라 (개인적으로) 생각됩니다.

 

Q1. 시간+uuid로 복합키로 pk를 설정하거나, 애플리케이션단에서 시간+uuid만든 String 타입을 pk를 설정하는것보다, snowflake 라이브러리 하나만 사용하는게 더 메모리가 효율적인게 맞을까요?

UUID 값 하나라도 이미 충분히 긴 값인데, 여기에 시간까지 합치면 길이는 더 길어지는 거라.. 굳이 Snowflake랑 비교할 부분이 아닌 것 같아요.

 

Q2. snowflake가 실제로 현업에서도 많이 쓰이는지 해당 라이브러리가 추후에 제대로 작동을 안할 경우에는 어떻게 대처를 해야 하는지 궁금합니다!

이미 위에서 답변드린 듯 합니다.

Q3. 추가적으로 uuid관련 내용이 Real Mysql 2권 중 어디에 있는지도 궁금합니다! 목차에서는 찾을 수가 없어서요 ㅠㅠ

UUID 자체에 대한 내용은 없습니다. 다만 Real MySQL 서적에서는 UUID 컬럼 인덱스의 효율성에 대한 이해를 도울 수 있는 MySQL Clustering Index와 인덱스 키 값 크기에 대한 효율성 등을 자세히 설명드리는 챕터가 있으니, 참고 부탁드려요.

 

Real MySQL 8.0 (1 권)

  • 4.2.1 프라이머리 키에 의한 클러스터링

  • 8.3.3 B-Tree 인덱스 사용에 영향을 미치는 요소

    • 8.3.3.1 인덱스 키 값의 크기

 

0

seijin07229272

자세히 알려주셔서 감사합니다~!!! 도움이 많이 되었습니다!!

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

21

2

JPA Repository 질문이 있습니다!

1

29

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

31

1

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

38

1

스프링부트 버전 문의드립니다.

0

28

1

Json 요청 처리

1

26

2

비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항

0

26

1

gRPC 실무에서 질문

0

30

2

수강기간 연장

0

18

1

Build 관련 문제 (테스트 관련 문제)

0

30

1

unique index가 걸린 상황에서 s-lock, x-lock 질문

0

506

2

질문드립니다.

0

250

1

Real MySQL 시즌1 part 2 에피소드 16의 인덱스가 null인 컬럼을 포함한다는 것에 대한 질문

0

170

1

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

0

222

2

파티셔닝의 자원 사용 효율 증가 관련 질문

1

644

2

INSERT에서 shared lock을 거는 이유 질문

1

434

3

안녕하세요. 인덱스 관련 질문 있습니다.

0

370

2

테이블이 1:N 구조에서 N쪽 테이블에 유니크 제약조건에 의한 오류발생 회피 방법이 뭘까요?

0

262

1

복합 인덱스의 컬럼중 선행 컬럼을 조건에서 누락해도 인덱스가 사용될 수도 있나요?

0

239

1

SKIP LOCKED 부분에서 INNER JOIN이 아니고 LEFT JOIN이 걸릴수 있다면

0

184

1

단일 인덱스 크기, 전체 인덱스 크기 구하는 계산식

0

235

2

에피소드 21에 궁금한 점이 있어 질문드립니다.

0

233

2

에피소드 17번에서 skip locked 질문이 있습니다.

0

264

1

Real MySQL 시즌 1 - Part 1 or Part2 영상에 나오는 자료 공유 가능하나요?

1

364

1