본문 바로가기

DBMS/SQL Server

[SQL Server] uniqueidentifier 데이터 형식

 

uniqueidentifier 데이터 형식은 GUID(Globally Unique Identifier) 역할을 하는 16바이트 이진 값을 저장한다.

GUID는 고유한 이진 숫자이며, 전 세계 모든 컴퓨터는 고유한 GUID 값을 생성한다.

GUID는 네트워크 카드 번호, CPU 클락, 현재 시간 및 날짜 등과 같은 여러 변수들을 사용해서 생성된 값으로

전 세계에서 유일한 구분 값으로 이용된다.

 

이런 값이 왜 필요한가?

Identity로 생성되는 primary key 값은 해당 테이블에서는 식별이 가능하지만, 바로 인접한 테이블이나

전세계에 걸쳐있는 테이블과는 식별하지 못한다. 즉 중복 값이 발생할 수 있다는 것이다.

하지만 테이블 A의 PK 값이 '52D383B1-B674-4AFD-88C7-17B7BAB77E42' 라면, 이 값은 전 세계에서

유일한 값이 될 수 있다.

그러면 네트워크를 통해서 테이블을 파티셔닝한 것을 합할 수도 있고, 하나의 테이블을 전 세계에

지점에 걸쳐서 분할할 수도 있다. 그런 이유로 GUID를 사용할 수 있다.

 

그러나 GUID는 식별 가능함이라는 능력 자체는 뛰어나지만, 이 값을 생성하기 위해서 상대적으로

시간이 많이 소요되고, 16바이트라는 많은 저장공간을 사용하게 된다.

또 생성된 값이 인간이 판단하고 기억할 수 있는 일반적인 값의 형태가 아니며,

정렬에도 사용할 수 없다는 단점이 있다.

 

 -- uniqueidentifier 데이터 형식 선언

 CREATE TABLE TEST_GUID (

     ID uniqueidentifier PRIMARY KEY

 )

 GO

 

 -- NEWID() 시스템 함수를 사용하여 값 삽입

 INSERT TEST_GUID VALUES (NEWID())

 GO

 

 -- GUID 확인

 SELECT * FROM TEST_GUID

 GO

 

 

 

참고 : Deep Indise T-SQL 쿼리 테크닉

   http://msdn.microsoft.com/ko-kr/library/ms190215.aspx