uuid v4 대 v6(순서 완료), MySQL에서 더 효율적인 것은 무엇입니까?
질문이 있는데 당신의 의견을 듣고 싶습니다.
id를 프라이머리 키로, uuid를 세컨더리 키로 하는 모델이 있는데, 모든 외부 콜, 즉 API를 통한 콜을 uuid를 사용하여 레코드를 식별하기 때문에 표준 버전 4와 버전 6(주문) 중 어느 쪽을 사용하는 것이 더 효율적인지 궁금합니다.uuid 컬럼이 색인화되어 있어도 API를 통해 uuid를 식별자로 사용하여 요청을 할 때 데이터베이스가 인덱스 레코드에서 찾을 필요가 있다고 생각하기 때문에 "주문"되어 있으면 데이터베이스가 이 레코드를 찾기 쉽지 않습니다(v6).
DB: MySQL/MariaDB
Michael Coburn은 이에 대한 훌륭한 블로그를 올렸습니다.https://www.percona.com/blog/2015/04/03/illustrating-primary-key-models-in-innodb-and-their-impact-on-disk-usage/
그 블로그는 2015년에 작성되었지만, 그 생각은 여전히 사실이다.
그는 순서 없는 UUID를 사용하여 레코드를 "랜덤" 순서로 삽입하면 페이지가 많이 분할되기 때문에 대량의 단편화가 발생한다는 것을 보여주었습니다.프라이머리 키가 단조롭게 증가하고 있기 때문에(예를 들어 자동 증분 정수 또는 순서부 UUID) 레코드가 삽입 순서로 저장되는 반면, 페이지 분할은 적어지고 테이블은 보다 콤팩트하게 저장됩니다.
보다 콤팩트한 테이블은 페이지당 평균 더 많은 레코드를 저장하므로 캐시에 할당된 RAM의 양이 테이블의 더 많은 부분을 차지하게 됩니다.
그 블로그는 기본 키에 관한 것이다.보조 키에 대해 물으셨죠?
페이지에 저장되어 있는 모든 B 트리에도 동일하게 적용됩니다.무작위로 삽입할 경우 조각화 및 페이지 분할이 발생할 가능성이 높습니다.순서대로 넣으면 더 콤팩트해집니다.
언급URL : https://stackoverflow.com/questions/67348404/uuid-v4-vs-v6-ordered-which-more-efficient-for-mysql
'it-source' 카테고리의 다른 글
인터페이스를 구현하는 Java 클래스 찾기 (0) | 2022.10.20 |
---|---|
python의 루프에 대해 첫 번째 엔트리를 건너뛰시겠습니까? (0) | 2022.10.20 |
intXX_t와 int_fastXX_t의 차이점은 무엇입니까? (0) | 2022.10.20 |
2개의 정수의 XOR이 범위를 벗어날 수 있습니까? (0) | 2022.10.20 |
문자열에서 숫자를 추출하여 int 배열을 얻는 방법은 무엇입니까? (0) | 2022.10.20 |