본문 바로가기
Database/Oracle

[ORACLE] USER_TAB_COL_STATISTICS 뷰로 컬럼 통계 최적화 전략 세우기

by Papa Martino V 2025. 8. 8.
728x90

USER_TAB_COL_STATISTICS 뷰로 컬럼 통계 최적화 전략 세우기
[ORACLE] USER_TAB_COL_STATISTICS

1. USER_TAB_COL_STATISTICS란?

USER_TAB_COL_STATISTICS는 Oracle에서 사용자 테이블에 포함된 컬럼별 통계 정보를 보여주는 데이터 딕셔너리 뷰입니다.

이 뷰는 SQL 옵티마이저가 실행 계획을 수립할 때 참조하는 중요 지표들을 포함하며, 성능 튜닝 및 통계 품질 점검에 활용됩니다.

2. 통계 정보의 필요성

  • 실행 계획 최적화: 통계에 기반한 비용 기반 옵티마이저(CBO)가 최적 경로를 선택
  • 병목 진단: 컬럼의 NULL 비율, 고유값 개수 등을 통해 인덱스 또는 풀스캔 여부 판단
  • 자동 통계 수집: Oracle은 기본적으로 자동 통계 수집 기능을 제공 (DBMS_STATS 사용)

3. 주요 컬럼 설명

컬럼명 설명
TABLE_NAME 컬럼이 속한 테이블 이름
COLUMN_NAME 통계 정보가 저장된 컬럼 이름
NUM_DISTINCT 고유한 값의 개수
LOW_VALUE / HIGH_VALUE 컬럼의 최솟값 및 최댓값 (RAW 형식으로 저장됨)
NUM_NULLS NULL 값을 가진 행 수
DENSITY 분포 밀도 (옵티마이저가 사용)
HISTOGRAM 히스토그램 유형 (e.g. NONE, HEIGHT BALANCED, FREQUENCY)
LAST_ANALYZED 마지막 통계 분석 일자

4. 실전 활용 예제

-- 특정 테이블의 컬럼 통계 정보 조회
SELECT COLUMN_NAME, NUM_DISTINCT, NUM_NULLS, HISTOGRAM, LAST_ANALYZED
FROM USER_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'ORDERS';
      
-- NULL 값이 많은 컬럼 선별
SELECT TABLE_NAME, COLUMN_NAME, NUM_NULLS
FROM USER_TAB_COL_STATISTICS
WHERE NUM_NULLS > 1000
ORDER BY NUM_NULLS DESC;
      

5. 통계 정보 관련 뷰 비교

뷰 이름 역할 범위
USER_TAB_COL_STATISTICS 컬럼 통계 정보 사용자 소유 테이블
USER_TAB_STATISTICS 테이블 단위 통계 행 수, 블록 수 등
USER_HISTOGRAMS 히스토그램 분포 정보 정밀 튜닝용

6. 고급 활용 전략

  • 인덱스 효과 분석: NUM_DISTINCT 값이 높을수록 인덱스 효과 큼
  • 히스토그램 자동 생성: METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO' 설정
  • RAW 포맷 파싱: LOW_VALUE / HIGH_VALUE는 TO_NUMBER/UTL_RAW.CAST_TO_xx로 해석 가능

7. 결론

USER_TAB_COL_STATISTICS는 Oracle 옵티마이저가 정확하고 효율적인 실행 계획을 생성하는 데 필요한 통계 데이터를 제공하는 핵심 뷰입니다. 이 정보를 기반으로 인덱스 설계, 쿼리 구조 조정, 병목 지점 개선 등의 다양한 성능 최적화 작업을 수행할 수 있습니다.

참고 자료

728x90