본문 바로가기
Database/Oracle

[ORACLE] ALL_PART_COL_STATISTICS 뷰 완전 해석 : 파티션 컬럼 통계를 활용한 SQL 성능 최적화

by Papa Martino V 2025. 6. 26.
728x90

오라클에서 SQL의 실행 성능은 통계 정보에 크게 의존합니다. 특히 파티션 테이블에서는 전체 통계뿐 아니라 각 파티션의 컬럼 통계가 매우 중요한 역할을 합니다. 이러한 정보를 제공하는 뷰가 바로 ALL_PART_COL_STATISTICS입니다. 본 글에서는 ALL_PART_COL_STATISTICS의 구조와 실무 활용법, 통계 수집 전략, 관련 뷰 비교까지 상세히 다루어 오라클 환경에서 파티션 기반 SQL 성능 최적화에 실질적인 도움이 될 수 있도록 안내합니다.

1. ALL_PART_COL_STATISTICS란?

오라클 데이터베이스에서 ALL_PART_COL_STATISTICS는 사용자가 접근 가능한 파티션 테이블의 각 파티션별 컬럼 통계를 조회할 수 있는 데이터 딕셔너리 뷰입니다. 옵티마이저가 쿼리 실행 계획을 수립할 때, 이 정보를 기반으로 각 파티션에 대한 선택도(Selectivity)와 비용(Cost)을 계산합니다.

1-1. 활용 목적

  • 파티션 컬럼의 NDV(고유값 수), 최소/최대 값 분석
  • 파티션 간 통계 편차 확인을 통한 SQL 옵티마이저 힌트 조정
  • 잘못된 통계 수집으로 인한 성능 저하 트러블슈팅

2. 주요 컬럼 설명

컬럼명 설명
OWNER 테이블 소유자
TABLE_NAME 테이블 이름
PARTITION_NAME 해당 통계가 적용된 파티션 이름
COLUMN_NAME 컬럼 이름
NUM_DISTINCT 고유 값 개수 (NDV)
LOW_VALUE 해당 파티션 내 컬럼의 최소값
HIGH_VALUE 해당 파티션 내 컬럼의 최대값
NUM_NULLS NULL 값 개수
LAST_ANALYZED 통계가 마지막으로 수집된 날짜

3. 실전 활용 예시

3-1. 통계 누락 또는 부정확성 확인

SELECT table_name, partition_name, column_name, num_distinct, last_analyzed
FROM ALL_PART_COL_STATISTICS
WHERE owner = 'SALES'
AND table_name = 'SALES_TRANSACTIONS'
AND column_name = 'SALES_DATE';

이 쿼리를 통해 특정 컬럼의 각 파티션별 고유값 수와 통계 최신화를 확인할 수 있습니다.

3-2. 파티션 간 데이터 편차 분석

파티션별로 NUM_DISTINCT가 큰 차이를 보일 경우, 옵티마이저가 잘못된 실행 계획을 수립할 수 있으므로 히스토그램 재수집이나 동적 샘플링(Dynamic Sampling)을 고려해야 합니다.

4. 관련 뷰와 비교

뷰 이름 설명 주요 활용
ALL_PART_COL_STATISTICS 파티션별 컬럼 통계 정보 SQL 옵티마이저 정확도 향상
DBA_TAB_COL_STATISTICS 테이블 전체 수준의 컬럼 통계 통계 누락 여부 및 최신화 확인
DBA_TAB_PARTITIONS 파티션 메타 정보 파티션 존재 및 상태 분석
DBA_HIST_OPTIMIZER_ENV 과거 실행 계획 시의 옵티마이저 환경 히스토리 기반 성능 추적

5. 실무에서의 통계 관리 전략

  • 파티션 단위 통계 수집: 새로 추가되거나 변경된 파티션만 대상으로 DBMS_STATS.GATHER_TABLE_STATS 수행
  • 동적 샘플링 활용: 통계가 오래되었거나 누락된 파티션의 경우 옵티마이저가 실행 시 통계를 자동 수집
  • 히스토그램 생성 기준 관리: 컬럼 분포가 불균형할 경우 히스토그램을 활성화하여 옵티마이저 예측 향상

6. 주의사항 및 팁

  1. 파티션 통계는 테이블 통계와 별도로 수집되어야 하며, 누락 시 성능 저하가 발생할 수 있습니다.
  2. 매우 큰 테이블의 경우, 전체 통계가 아닌 INCREMENTAL 옵션을 활용한 파티션 통계만 수집하는 전략이 효과적입니다.
  3. 통계 수집 시 병렬 처리와 샘플링 비율 조정으로 시간과 성능 간의 균형을 맞추는 것이 중요합니다.

7. 결론

ALL_PART_COL_STATISTICS는 파티션 기반의 대규모 데이터 환경에서 SQL 실행 성능을 최적화하는 데 반드시 참조해야 하는 뷰입니다. 특히 통계의 정밀도와 최신성이 SQL 실행 계획에 결정적인 영향을 미치므로, 해당 뷰를 통해 정기적 점검과 관리를 수행하는 것이 성능 관리의 핵심입니다. 실무에서의 활용을 통해 각 파티션의 데이터 특성과 분포를 정확히 파악하고, 이에 맞는 통계 수집 정책을 수립해야만 옵티마이저의 판단 오류를 방지하고 예측 가능한 SQL 성능을 유지할 수 있습니다.

8. 참고 자료

  • Oracle® Database Performance Tuning Guide 19c
  • Oracle® Database PL/SQL Packages and Types Reference – DBMS_STATS
  • Oracle® Database Reference 19c – ALL_PART_COL_STATISTICS View
728x90