programing

MySQL의 INT와 UUID의 차이

instargram 2023. 10. 4. 20:56
반응형

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두 가지 선택을 모두 성능과 동일하게 해야 합니다.아래 참고문헌 참조:

  1. 로.UUID안하든 안하든UUID?
  2. 신화,GUIDAutoincrement
  3. 성능:UUIDauto-increment케잌php-
  4. UUIDMySQL의 성능?
  5. 기본 키:IDs 대 sGUIDs (coding 공포)

(UUIDauto-increment성능 결과, Gynthes, vs )를 각색했습니다.

enter image description here

UUID 장단점(기본 키에서 채택: s s)

GUID프로스

  • 모든 테이블, 모든 데이터베이스, 모든 서버에서 고유
  • 여러 데이터베이스의 레코드를 쉽게 병합할 수 있습니다.
  • 여러 서버에 걸쳐 데이터베이스를 쉽게 배포할 수 있습니다.
  • 생성가능ID데이터베이스로 왕복 이동할 필요 없이 어디서든
  • 대부분의 복제 시나리오에서 필요한 사항GUID어쨌든 기둥들

GUID단점

  • 기존의 4바이트 인덱스 값보다 무려 4배나 큰 값입니다. 이 값은 신중하지 않으면 성능과 스토리지에 심각한 영향을 미칠 수 있습니다.
  • 디버그하기 번거롭습니다(where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}')
  • 생성된GUIDs는 최상의 성능을 위해 부분적으로 순차적이어야 합니다(예:newsequentialid()(SQL 2005) 및 클러스터 인덱스를 사용할 수 있도록 합니다.

메모

문헌을 잘 하겠습니다 할 것입니다.UUID내 사용 사례에 따라 안 할 수도 있습니다.는 하지만, 경우에만,UUIDs가 더 좋을 것 같습니다.를 들어다를 할 수 .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

반응형