'데이터베이스'에 해당되는 글 1건

  1. 2009/06/23 MS-SQL GUID index

멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
MS-SQL로 만든 DB에서 UniqueIdentifier 칼럼을 만들어 Index를 설정하거나 이를 Primary key로 사용하면, 말 그대로 GUID 즉, 쉽게 글로벌 유일성(Global Uniqueness)를 보장해 주게 됩니다. DB에서 UniqueIdentifier 즉 UUID 혹은 GUID를 인덱스로 사용하느냐 아니면 int, bigint, number 등의 정수형을 사용하느냐에는 따른 많은 장단점이 있습니다.

GUID 값은 이른바 Pseudo Random 값으로, 16 bytes 크기로 상당히 큰 싸이즈이며, index를 크게 단편화(fragmentation)시킬 수 있다는 단점이 있습니다. 아래 블로그에서 보듯이 Windows 7 RC 다운로드 싸이트가 다운된 원인이 클라이언트에서 제공하는 GUID 값을 SQL DB 인텍스로 사용한데 기인한 것이라고 합니다. 이것은 결국 SQL의 성능을 급격히 저하시켜 웹페이지를 매우 느리게 만들었다는 것 입니다.


http://www.sqlskills.com/BLOGS/PAUL/post/Why-did-the-Windows-7-RC-failure-happen.aspx

SQL 2005에서 추가된 NEWSEQUENTIALID() 는 상당히 fragmentation을 줄여주는 것으로 나타나 있습니다. NEWSEQUENTIALID()는 내부적으로 UuidCreateSequential Windows API를 사용하는데 이는 컴퓨터 MAC 주소를 가지고 있어, 여전히 유일성을 보장해주고 있습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License