인덱스를 파티션 정렬하지 않으면 이점이 있습니까?


9

큰 파티션 된 OLAP 테이블을 관리 할 권한이 있습니다. 이 테이블을 검토하는 동안 인덱스 중 하나가 파티션 구성표와 일치하지 않는 것으로 나타났습니다. 저자가 이용할 수없고 신중하게 조작 된 Google 검색에서 유용한 결과가 반환되지 않았기 때문에 의도적 인 것인지 실수인지 확실하지 않습니다.

SQL Server 2008에서 인덱스를 파티션 정렬하지 않는 이유가 있습니까?


1
혹시. 인덱스 통계 사용법을 쿼리하여 해당 인덱스가 사용 중인지 확인하십시오. 그렇다면 확장 이벤트 또는 서버 측 추적을 사용하여 해당 인덱스에 도달하는 쿼리를 캡처하십시오. 파티션 정렬 인덱스에서 성능이 더 좋으면 좋을 것입니다. 그렇지 않은 경우 실제로 정렬되지 않은 파티션 된 인덱스가 필요한지 확인하십시오. 그렇지 않은 경우 향후 쿼리에서 활용할 수 있으므로 어쨌든 파티션을 정렬하도록하십시오. 물론 비용 / 노력 / 중단이 너무 높으면 그렇지 않습니다.
알리 Razeghi

분할 된 테이블을 인덱싱하는 가장 좋은 방법은 인덱스를 분할 구성표에 맞추는 것입니다. 이 특정 테이블에서는 인덱스를 파티션 구성표에 맞추지 않는 유스 케이스를 이해하고 싶다고 생각했습니다. 특정 문제를 해결하려고하지 않으므로 분석해야 할 쿼리가 없습니다.
Robin

정렬되지 않은 인덱스를 디자인하는 또 다른 이유는 파티션 열을 포함하지 않는 고유 인덱스 (기본 키 또는 고유 제한 조건 포함)입니다. 이 경우 인덱스를 전혀 분할하거나 다른 기능 / 구성표를 사용하여 분할해서는 안됩니다.
Dan Guzman

답변:


11

파티션 기본 오브젝트에 (고유하지 않은) 인덱스를 분할하지의 주요 장점은 주위에 작동한다는 것입니다 오랜 쿼리 최적화 제한 등의 주문 데이터 요청과 관련 MIN, MAX또는 TOP (n)쿼리.

분할 된 인덱스에서 최적화 프로그램은 일반적으로 변환 할 수 없습니다 MIN, MAX또는 TOP (n)같은 동작으로 파티션 당 , 당 파티션 부분 집계를 통해 최종 글로벌 집계 하였다. 대신 옵티마이 저는 인덱스의 모든 파티션을 스캔하는 실행 계획을 선택합니다. 이에 대한 예외는 집계 열 또는 상위 작업이 분할 열에 지정된 단일 경우입니다.

정렬되지 않은 인덱스를 가지지 않는 매우 좋은 이유 가 있다고 언급해야 합니다. 정렬되지 않은 인덱스를 사용하도록 선택하는 것은 매우 현명한 선택이어야합니다. 나는 과거에 (드물게) 스스로 해냈지만 혜택이 비용을 분명히 능가하거나 다른 합리적인 대안이없는 매우 구체적인 상황에서.


문제를 설명하는 Itzik Ben-Gan 의 기사.


3

정렬되지 않은 인덱스가 필요한 일부 제약 조건 (예 : 고유)에 대해서는 명백한 문제가 있습니다 .

다른 비 정렬 인덱스가 가지고보다 비용을 (주로 그들이 스레드 당 파티션을가는 많은 병렬 연산자를 방지하고 대안 메모리 비싼) 따라서 나는 강하게 인덱스에 대해 조언한다. Paul이 제시 한 경우에도 정렬되지 않은 인덱스에 대해서는 조언하지 않습니다.


1
예. 정렬되지 않은 인덱스를 선택하는 것은 매우 현명한 선택이어야합니다. 나는 과거에 (드물게) 스스로 해냈지만 혜택이 비용을 능가하는 매우 구체적인 상황에서.
Paul White 9

2

정렬되지 않은 인덱스는 파티션을 전환하는 파티셔닝의 주요 이점을 무효화합니다. 그것에 의존하지 않고 다른 이유로 파티션을 나누는 경우 (다른 저장소, 읽기 전용 파티션, 증분 통계 등) 계속해서 정렬되지 않은 indexex를 만드십시오.

정렬되지 않은 인덱스는 전체 테이블에 고유 제한 조건을 적용 할 수 있으므로 유용합니다. 또한 정렬되지 않은 인덱스는 분할 키가 암시 적 검색 접두사 일 필요는 없습니다. 10000 개의 파티션이 있고 파티션 키를 기반으로하지 않는 쿼리를 상상해보십시오. 인덱스가 정렬 된 경우 실행 계획은 10000 개의 파티션을 찾아야합니다. 다른 답변에는 추가 예가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.