요구사항: 최근 면접에서 SQL Server 데이터베이스 int와 guid가 메인 키인 것의 차이점이 무엇인지 물었습니다.두 가지 모두 장단점이 있으니, 실제 비즈니스 상황에 맞게 신중히 평가해 주세요。
원문 1:하이퍼링크 로그인이 보입니다.
INT를 주 키로 사용하는 장점:
1. 4바이트의 작은 데이터 저장 공간이 필요합니다.
2. INT를 삽입 및 업데이트 연산에 사용하는 성능이 GUID보다 우수하므로, int를 사용하면 애플리케이션 성능이 향상됩니다.
3. 인덱스 및 조인 연산, int가 가장 좋은 성능을 보입니다.
4. 기억하기 쉽다.
5. 함수를 통해 최신 값을 얻기 위한 지원, 예를 들어 Scope_Indentity().
INT를 주 키로 사용하는 단점
1. 테이블 병합이 자주 발생하면 기본 키가 중복될 수 있습니다.
2. INT 데이터 사용 범위에 제한이 있습니다. 데이터가 많으면 INT 값 범위를 초과할 수 있습니다.
3. 분산 저장된 데이터 테이블을 처리하는 것이 어렵습니다.
GUID를 기본 키로 사용하는 장점:
1. 독특하다.
2. 중복 기회가 거의 없다.
3. 대량의 데이터에 대한 삽입 및 업데이트 작업에 적합합니다.
4. 서버 간 데이터 병합이 매우 편리합니다.
GUID를 기본 키로 사용할 때의 단점:
1. 저장 공간이 16바이트 정도로 커서 디스크 용량을 더 많이 차지합니다.
2. 기억하기 어렵다. 조인 연산의 성능은 int보다 낮습니다.
3. 최신 생성된 GUID 기본 키를 얻는 내장 기능이 없습니다.
4. 기본 키인 GUID는 테이블의 다른 인덱스에 추가되므로 성능을 저하시킵니다.
요약:
위에서는 GUID와 INT 데이터 타입을 기본 키로 사용하는 장단점을 나열합니다. 대용량 데이터 작업에서는 guid를 기본 키로 사용하는 것이 권장되는 것 같습니다. 반면지능을 사용하면 최고의 성능을 얻을 수 있습니다。
코멘트: 사용순서 GUID 성능이 크게 향상됩니다。
원문 2:하이퍼링크 로그인이 보입니다.
항등성은 전체 타입 타입이며, 십진법 10진법 정의가 없으므로 바이틴트는 허용됩니다
GUID는 고정 이진(16)으로, 16바이트입니다
정체성은 증분(또는 빼기)하고, GUID는 무작위이므로 데이터가 삽입될 때,전자는 조각을 생성하지 않지만, 후자는 생성되며, 후자는 순서가 뒤섞여 있어 삽입 시 순서를 조정해야 하므로 성능 면에서 전자가 일반적으로 후자보다 더 우수합니다.
많은 정보가 보통 표로 나뉘기 때문에, 많은 경우 동일성이 더 적합합니다
기본 키의 의미에 관해서는, 설계 시 어떻게 생각하느냐에 따라 다릅니다. 데이터 처리 자체에서는 기본 키가 의미가 있을 필요는 없고, 비즈니스 의미를 포함해야 한다면 동일성 기본 키는 당연히 의미가 없습니다. 하지만 일반적으로 비즈니스 의미와 데이터 처리는 분리하는 것이 좋습니다. 비즈니스는 항상 변합니다. 테이블 디자인의 메인 키에 의미를 부여하려면 비즈니스가 변하므로 테이블 구조를 더 조정해야 합니다.
원문 3:하이퍼링크 로그인이 보입니다.
1. 데이터 마이그레이션이 자주 필요한 시스템에서는 Guid를 사용하는 것이 권장됩니다. 그리고 해당 외래키 필드, 즉 조인 쿼리에 사용되는 필드에 비클러스터 인덱스를 추가하면 성능 향상에 큰 도움이 됩니다. 여기서 조건의 필드는 비클러스터 인덱스에 대해서도 적절히 추가할 수 있습니다.
2. Guid 타입을 기본 키로 사용할 때, 데이터 타입은 고유식별자(uniqueidentifier)여야 하며, 반드시 기억해야 합니다기본 키의 " 취소종합 지수”
3. 마이그레이션이 필요 없는 시스템이나 소규모 시스템의 경우, int를 기본 키로 사용하는 것이 여전히 매우 편리하며, 효율성도 어느 정도 향상됩니다.
(끝)
|