728x90

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 옵티마이저가 정확하고 효율적인 실행 계획을 생성하는 데 필요한 통계 데이터를 제공하는 핵심 뷰입니다. 이 정보를 기반으로 인덱스 설계, 쿼리 구조 조정, 병목 지점 개선 등의 다양한 성능 최적화 작업을 수행할 수 있습니다.
참고 자료
- Oracle® Database Performance Tuning Guide 21c
- Oracle® Database SQL Tuning Guide
- Oracle Help Center: https://docs.oracle.com/en/database/
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_TAB_HISTOGRAMS 뷰로 SQL 옵티마이저 힌트 최적화하기 (0) | 2025.08.08 |
|---|---|
| [ORACLE] USER_TAB_COMMENTS 뷰로 테이블 주석 관리 및 문서화 자동화하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COLUMNS 뷰로 테이블 컬럼 구조 완벽 분석하기 (0) | 2025.08.08 |
| [ORACLE] USER_TABLESPACES 뷰로 테이블스페이스 접근 권한 완벽 분석 (0) | 2025.08.08 |
| [ORACLE] USER_TABLES 뷰를 활용한 테이블 구조 분석과 관리 전략 (0) | 2025.08.08 |