파티션 교환 (Oracle 10G)을 통한 테이블로드
-
03-07-2019 - |
문제
이 유형의 부하를 최적화하는 데 몇 가지 질문이 있습니다.
하나는 파티션 된 테이블에로드 할 새 데이터 테이블을 작성한 다음이 새 테이블에 인덱스를 작성합니다.
Compute Statistics 옵션으로 인덱스를 구축하거나 DBMS_STATS의 캐스케이드 옵션을 사용해야합니까?
스왑 전에 또는 스왑 후 파티션에 테이블에 통계를 수집해야합니까?
스왑 후 수행하고 매개 변수 목록에 파티션 이름을 지정하면 세분성 매개 변수가 어떤 상호 작용을합니까? 예를 들어, 파티션 이름을 지정한 다음 세분성을 '글로벌 및 파티션'으로 설정하면 전역에서 전혀 작동합니까? 그렇습니다 단지 그 하나의 파티션?
해결책
Compute Statistics 옵션으로 인덱스를 구축하거나 DBMS_STATS의 캐스케이드 옵션을 사용해야합니까?
이것이 데이터웨어 하우스 인 경우 먼저 통계를 전혀 수집하지 않고 동적 샘플링을 사용하는 것을 고려하십시오. 둘째, 통계를 수집하면 항상 인덱스에 대한 계산 통계를 사용하십시오.
스왑 전에 또는 스왑 후 파티션에 테이블에 통계를 수집해야합니까?
스왑 전에 새로운 데이터 테이블에 통계를 수집하여 새 데이터에 대한 파티션 통계를 얻으십시오-나중에 파티션 된 테이블에 통계를 수집하여 테이블 통계를 수집하십시오.
스왑 후 수행하고 매개 변수 목록에 파티션 이름을 지정하면 세분성 매개 변수가 어떤 상호 작용을합니까? 예를 들어, 파티션 이름을 지정한 다음 세분성을 '글로벌 및 파티션'으로 설정하면 전역에서 전혀 작동합니까? 그 단 하나의 파티션을합니까?
위 참조.
진지하게, 통계와 동적 샘플링에 기회를주지 마십시오.
다른 팁
DBMS_STATS
이 버전의 통계를 계산하는 적절한 방법으로 간주됩니다. THE로 인덱스 구축COMPUTE STATISTICS
가능하지만 일반적으로 모든 통계를 한 번에 계산하고 스냅 샷을 가져 가려고합니다.스왑 후 통계를 수집하고 싶습니다. 이런 식으로 Optimizer는 해당 파티션의 데이터를 사용하여 쿼리를 실행하는 데 최선의 추측을합니다.
왜 둘 다 넣을까요?