BINARY(16)으로
저장합니다. vsql_uuid는 16바이트를 저장하고, 익숙한 36자 형식으로 출력하며,
자체 비교 규칙으로 정렬되는 진짜 uuid 열 유형을 추가합니다. 또한 버전 1, 3,
4, 5, 6, 7을 생성합니다. MySQL 자체의 UUID()는 버전 1만 생성합니다.
설치
설치 스크립트, Docker 이미지 또는 릴리스 tarball로 VillageSQL을 설치했다면vsql_uuid.veb는 이미 서버의 lib/veb/ 디렉터리에 있습니다. 문 하나로 서버에
설치하세요:
추가되는 기능
uuid 유형
열을uuid로 선언합니다. 16바이트를 차지하며 기본 키로 사용할 수 있습니다.
함수
예제
버전 7 식별자를 기본 키로 사용하면 나중에 쓴 행이 먼저 쓴 행 뒤에 정렬됩니다. 그런 다음 버전을 다시 읽어 봅니다:위의 정렬 순서는 밀리초 단위를 넘어서는 경우에만 보장됩니다. 버전 7은 앞부분에
밀리초 타임스탬프를 두고 나머지는 카운터 없이 무작위로 채우므로, 같은 밀리초에
생성된 두 값은 서로 무작위 순서로 정렬됩니다. 그래서 예제에서 두 행을 별도의
문으로 삽입합니다. 더 세밀한 순서가 필요하면
UUID_V6()를 사용하세요.uuid 열은 문자열 리터럴은 받지만 문자열 표현식은 받지 않습니다. 따라서
INSERT INTO orders VALUES ('550e8400-e29b-41d4-a716-446655440000', ...)는
동작하지만, INSERT INTO orders VALUES (UUID(), ...)는
ERROR 3219 (HY000): Incorrect uuid value: cannot implicitly cast string expression. Use explicit conversion for column 'id' at row 1 오류로
실패합니다. 대신 위의 함수 중 하나로 값을 생성하세요.참고 항목
- MySQL의 UUID — 각 버전의 용도와 선택 기준
- 기본 키 전략 — UUID 키가 도움이 되는 곳과 비용이 드는 곳
- 확장 기능 설치 —
INSTALL EXTENSION의 동작 방식과 서버가 번들을 찾는 위치 - 사용 가능한 확장 기능 — 전체 카탈로그
- villagesql/vsql-uuid — 소스, 빌드 지침, 알려진 제한 사항