DB 설계를 완전히 제어 할 수 없다고 말 함으로써 현재 시스템의 여러 측면 을이 시나리오의 목적으로 변경할 수는 없습니다 .
디자인 측면을 다시 생각해야하는 방법에 대한 의견은 정확하지만 도움이되지 않습니다. :)
약 150 필드 너비와 약 600m 행의 매우 큰 테이블이있어 많은 수의 프로세스를 구동합니다. 이는 데이터웨어 하우스 상황에 있으므로 예약 된로드 프로세스 외부에 업데이트 / 삽입이 없으므로 색인이 많이 생성됩니다.
이 테이블의 파티셔닝을 시도했으며 파티션 된 테이블의 인덱싱에 대한 일부 우려가 있습니다. 파티셔닝에 대한 경험이 없으므로 입력 또는 링크에 감사드립니다. BOL 또는 msdn에서 내가 찾은 것을 구체적으로 찾을 수 없습니다.
현재 우리는 전화 IncidentKey
할 필드를 클러스터링합니다.이 필드는 varchar(50)
독특하지 않습니다. 1 ~ 100 개의 레코드를 동일하게 가질 수 있습니다 IK
(의견은 없습니다). 우리는 종종 오래된 IncidentKey
레코드 에 대한 새로운 데이터를 얻으 므로 순차적이 아닙니다.
IncidentDate
파티션이 올바르게 작동하려면 클러스터 된 인덱스 키에 파티션 필드를 포함시켜야한다는 것을 알고 있습니다. 나는 그것이 될 것이라고 생각합니다 IncidentKey, IncidentDate
.
문제는 "새"파티션의 레코드가 클러스터 된 인덱스의 "오래된"파티션의 레코드보다 앞에 있어야하는 경우 클러스터 된 인덱스의 메커니즘이 파티션 된 테이블의 2 개 부분 키에서 어떻게 작동 하는가입니다.
예를 들어 5 개의 레코드가 있습니다.
IncidentKey Date
ABC123 1/1/2010
ABC123 7/1/2010
ABC123 1/1/2011
XYZ999 1/1/2010
XYZ999 7/1/2010
새 레코드를 얻는 경우 ABC123, 2/1/2011
클러스터 된 인덱스 BEFORE 에 있어야합니다 XYZ999, 1/1/2010
. 어떻게 작동합니까?
조각화와 포인터를 가정하고 있지만 이중 부분 키가있는 분할 된 테이블에서 분할되지 않은 클러스터형 인덱스의 물리적 저장소 및 구성에 대한 정보를 찾을 수 없습니다.