MySQL의 INT와 UUID의 차이
기본 키를 다음 키로 설정하면INT
타이프()AUTO_INCREMENT
) 또는 설정합니다.UUID
, 데이터베이스 성능에서 이 둘의 차이점은 무엇입니까 (SELECT
,INSERT
등) 그리고 그 이유는?
UUID
범용 고유 식별자(다른 DB로 가져온 경우에도 고유)를 반환합니다.
MySQL 문서에서 인용하기(empassis mine):
UUID는 시공간에서 전 세계적으로 고유한 숫자로 설계됩니다.UUID()에 대한 두 개의 호출은 서로 연결되지 않은 두 개의 개별 컴퓨터에서 수행되더라도 두 개의 다른 값이 생성될 것으로 예상됩니다.
반면에 단순한.INT
기본 ID 키(예: AUTO_INCREMPENT)는 특정 DB 및 DB 테이블에 대해 고유한 정수를 반환하지만 보편적으로 고유하지는 않습니다(따라서 다른 DB로 가져올 경우 기본 키 충돌이 발생합니다).
성능 측면에서 볼 때, 를 사용하는 것은 눈에 띄는 차이가 없어야 합니다.auto-increment
위에UUID
. 대부분의 게시물(이 사이트의 일부 작성자 포함)에는 다음과 같이 명시되어 있습니다.물론이야.UUID
시간과 공간이 조금 더 소요될 수도 있지만, 이는 대부분(모두는 아닐지라도)의 경우에 성능 병목 현상이 발생하지는 않습니다.열을 다음과 같이 가지는 것Primary Key
두 가지 선택을 모두 성능과 동일하게 해야 합니다.아래 참고문헌 참조:
- 로.
UUID
안하든 안하든UUID
? - 신화,
GUID
대Autoincrement
- 성능:
UUID
대auto-increment
케잌php- UUID
MySQL의 성능?- 기본 키:
ID
s 대 sGUID
s (coding 공포)
(UUID
대auto-increment
성능 결과, Gynthes, vs )를 각색했습니다.
UUID
장단점(기본 키에서 채택: s 대 s)
GUID
프로스
- 모든 테이블, 모든 데이터베이스, 모든 서버에서 고유
- 여러 데이터베이스의 레코드를 쉽게 병합할 수 있습니다.
- 여러 서버에 걸쳐 데이터베이스를 쉽게 배포할 수 있습니다.
- 생성가능
ID
데이터베이스로 왕복 이동할 필요 없이 어디서든- 대부분의 복제 시나리오에서 필요한 사항
GUID
어쨌든 기둥들
GUID
단점
- 기존의 4바이트 인덱스 값보다 무려 4배나 큰 값입니다. 이 값은 신중하지 않으면 성능과 스토리지에 심각한 영향을 미칠 수 있습니다.
- 디버그하기 번거롭습니다(
where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}'
)- 생성된
GUID
s는 최상의 성능을 위해 부분적으로 순차적이어야 합니다(예:newsequentialid()
(SQL 2005) 및 클러스터 인덱스를 사용할 수 있도록 합니다.
메모
문헌을 잘 하겠습니다 할 것입니다.UUID
내 사용 사례에 따라 안 할 수도 있습니다.는 하지만, 경우에만,UUID
s가 더 좋을 것 같습니다.를 들어다를 할 수 .UUID
하지 않고//를 .UUID
되어 곳에 되어 있는 .및화다에 또는 할 수 .ID
충돌을 일으키고 충돌을 일으키는 것입니다.
예를 들어 v4 UUID(랜덤)를 사용하면 103조 버전-4 UUID 내에서 중복을 찾을 확률은 10억 분의 1입니다.
UUID 키는 DB에서 지속되지 않는 한 pk가 될 수 없으므로 트랜잭션이 성공하지 않으면 라운드 트리핑이 발생할 때까지 pk를 가정할 수 없습니다.대부분의 UUID는 시간 기반, mac 기반, 이름 기반 또는 임의 UUID를 사용합니다.컨테이너 기반 배포로 크게 이동하고 있고, MAC 주소에 의존하는 MAC 주소의 시작 순서에 대한 패턴을 가지고 있기 때문에 작동하지 않습니다.시스템이 항상 정확한 시간 동기화를 한다는 가정이 있기 때문에 시간 기반은 보장되지 않습니다. 시계가 규칙을 따르지 않기 때문에 때때로 사실이 아닙니다.GUID는 충돌이 발생하지 않을 것이라고 보장할 수는 없지만 충분한 시간과 시스템이 병렬적으로 실행되고 시스템이 확산되어 결국 실패할 것이라고 보장합니다.
http://www.ietf.org/rfc/rfc4122.txt
클러스터된 기본 키를 사용하는 MySQL의 경우 무작위로 생성된 버전 4 UUID를 기본 키로 사용하면 삽입 성능이 저하됩니다.새로 삽입된 행을 클러스터 인덱스 내부의 올바른 위치에 배치하려면 행의 순서를 바꾸어야 하기 때문입니다.
FWIW, PostgreSQL에서 클러스터된 기본 키 대신 힙을 사용하므로 UUID를 기본 키로 사용해도 Postgre에 영향을 주지 않습니다.SQL의 삽입 성능입니다.
자세한 내용은 UUID와 Int: Choose Primary Key - UUID 또는 Auto Increment Integer를 좀 더 포괄적으로 비교해 보겠습니다.
언급URL : https://stackoverflow.com/questions/30461895/the-differences-between-int-and-uuid-in-mysql
'programing' 카테고리의 다른 글
새로 고침과 같은 표준 Android 메뉴 아이콘 (0) | 2023.10.04 |
---|---|
C: 표준 및 컴파일러의 정수 오버플로 (0) | 2023.10.04 |
요소가 디바인지 확인합니다. (0) | 2023.10.04 |
동적으로 생성된 Wordpress Wysiwyg Editor(wp_editor)가 제대로 표시되지 않음 (0) | 2023.10.04 |
자바스크립트 한 줄에 여러 변수를 정의하는 방법은? (0) | 2023.10.04 |