문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣ7FS02PS
문서번호ㅣTADTI180
개요
본 문서에서는 Incremental Global 통계 수집 방법에 대해 설명합니다.
Optimizer 통계는 Database와 Object에 대한 상세한 정보를 나타내고, 쿼리 Optimizer는 SQL문에 대해 가장 좋은 실행 계획을 선택하기 위해 통계를 이용합니다.
방법
1. Incremental Global 통계
새로운 파티션에 Data가 추가되거나 기존의 파티션 중 수정된 데이터가 있는 경우 Table level의 통계 수치를 다시 수집하기 위해서 Table 전체를 모두 Scan해야 합니다. 다시 말해 파티션이 적용된 Table의 Global 통계 정보를 수집하기 위해서 각 파티션을 Scan하는 Partition-level 통계 정보를 수집한 후 Global 통계 정보를 수집하기 위해 전체 파티션을 Scan하는 작업을 해야 합니다.
예를 들어 파티션 및 Table의 통계 정보를 수집하기 위해 Granularity를 ALL로 지정하면 전체 파티션이 2번 Scan 되므로 시간에 영향을 미치게 됩니다. 이를 피하기 위해 새로 추가된 파티션의 통계 정보만 생성하고 Global 통계 정보를 생성하는 방법도 Global 통계 정보 생성을 위해 전체 파티션을 Scan하게 되므로 비효율적입니다. (해당 파티션 1회 Scan + 전체 파티션 1회 Scan)
이때 Incremental Global('APPROX_GLOBAL AND PARTITION' granularity) 를 사용하면 이러한 성능 문제를 개선 할 수 있습니다. Incremental Global 통계는 전체 Table을 Scan하지 않고 변경한 파티션만 Scan하여 Global Table 통계를 갱신합니다. (해당 파티션 1회 Scan + 기존 파티션 정보 이용하여 GLOBAL통계 갱신)
해당 기능은 파티션 Table에 대한 Global 통계 수집을 향상시키는데 목적이 있습니다. 파티션 Table의 경우 시스템은 각 Partition 통계와 Table에 대한 전체 Global 통계를 유지하게 됩니다.
Incremental Global 통계의 적용 과정은 다음과 같습니다.
- Table을 생성, 데이터를 입력, 파티션 생성
- Granularity를 ALL로 초기에 GLOBAL, PARTITION 통계 수집
- 통계 수집된 상태를 확인 (모든 GLOBAL, PARTITION, Table column에 통계가 수집)
- 신규 파티션 추가 및 해당 데이터를 입력
- 추가로 Granularity를 “APPROX_GLOBAL AND PARTITION”로 하여 gather_table_stats를 수집
- 통계 수집된 상태를 확인
대용량 파티션 Table 중 Range 파티션은 과거 파티션에 대한 데이터 변경이 거의 일어나지 않기 때문에 Global 통계 수집을 하는 것은 비효율적일 수 있습니다. 이를 개선하기 위해 과거 파티션 통계 수집에 필요한 정보를 저장해 두고 Global 통계 정보를 수집할 때 과거 파티션은 저장된 정보를 이용하여 통계 수집 시간을 단축할 수 있습니다.