728x90

1. USER_TAB_HISTOGRAMS란?
USER_TAB_HISTOGRAMS는 Oracle에서 컬럼 값의 **분포 상태를 히스토그램 형태로 저장하는 데이터 딕셔너리 뷰**입니다.
Oracle 옵티마이저(CBO)는 히스토그램 정보를 활용하여 **비균등한 데이터 분포에 최적화된 실행 계획**을 수립합니다.
2. 히스토그램이란?
히스토그램은 컬럼의 값들이 얼마나 고르게 또는 쏠려 있는지를 보여주는 통계 모델입니다. 다음과 같은 유형이 있습니다:
- NONE: 히스토그램 없음 (기본 분포로 간주)
- HEIGHT BALANCED: 값 빈도 기준 분할
- FREQUENCY: 값 자체의 빈도 기록
- TOP-FREQUENCY: 자주 나오는 값만 추출
- HYBRID: 혼합형 (자동 생성 시 등장)
3. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TABLE_NAME | 히스토그램이 적용된 테이블 이름 |
| COLUMN_NAME | 히스토그램이 수집된 컬럼 이름 |
| ENDPOINT_NUMBER | 히스토그램 구간 번호 (오름차순) |
| ENDPOINT_VALUE | 히스토그램 구간에 해당하는 컬럼 값 (RAW 형식) |
| ENDPOINT_ACTUAL_VALUE | 실제 값 표시 (21c 이후 지원) |
4. 실전 활용 예제
-- 특정 테이블의 히스토그램 확인
SELECT COLUMN_NAME, ENDPOINT_NUMBER, ENDPOINT_VALUE
FROM USER_TAB_HISTOGRAMS
WHERE TABLE_NAME = 'PRODUCTS'
ORDER BY COLUMN_NAME, ENDPOINT_NUMBER;
-- 히스토그램이 존재하는 컬럼 목록
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM USER_TAB_HISTOGRAMS;
참고: 히스토그램은 DBMS_STATS 패키지의 METHOD_OPT 옵션으로 생성됩니다.
5. 히스토그램 관련 뷰 비교
| 뷰 이름 | 내용 | 범위 |
|---|---|---|
| USER_TAB_HISTOGRAMS | 히스토그램 데이터 (구간별 값 분포) | 사용자 소유 객체 |
| USER_TAB_COL_STATISTICS | 컬럼 단위 통계 정보 (NUM_DISTINCT, NULL 비율 등) | 사용자 소유 객체 |
| USER_HISTOGRAMS | 히스토그램 메타정보 (CBO용) | 더 자세한 내부 분포 정보 제공 |
6. 고급 활용 전략
- 비정형 분포 컬럼 자동 탐지: NUM_DISTINCT ≠ 실질 범위인 경우 히스토그램 유도
- 옵티마이저 강제 힌트: 히스토그램 기반 인덱스 활용 힌트 적용 가능
- 히스토그램 유지 관리:
DBMS_STATS.GATHER_TABLE_STATS시 주기적으로 갱신
7. 결론
USER_TAB_HISTOGRAMS는 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_USERS 뷰로 사용자 계정 정보 및 보안 정책 완벽 파악하기 (0) | 2025.08.08 |
|---|---|
| [ORACLE] USER_TAB_MODIFICATIONS 뷰로 통계 갱신 타이밍 완벽 제어하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COMMENTS 뷰로 테이블 주석 관리 및 문서화 자동화하기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COL_STATISTICS 뷰로 컬럼 통계 최적화 전략 세우기 (0) | 2025.08.08 |
| [ORACLE] USER_TAB_COLUMNS 뷰로 테이블 컬럼 구조 완벽 분석하기 (0) | 2025.08.08 |