본문 바로가기
728x90

SQL옵티마이저3

[ORACLE] USER_TAB_HISTOGRAMS 뷰로 SQL 옵티마이저 힌트 최적화하기 1. USER_TAB_HISTOGRAMS란?USER_TAB_HISTOGRAMS는 Oracle에서 컬럼 값의 **분포 상태를 히스토그램 형태로 저장하는 데이터 딕셔너리 뷰**입니다.Oracle 옵티마이저(CBO)는 히스토그램 정보를 활용하여 **비균등한 데이터 분포에 최적화된 실행 계획**을 수립합니다.2. 히스토그램이란?히스토그램은 컬럼의 값들이 얼마나 고르게 또는 쏠려 있는지를 보여주는 통계 모델입니다. 다음과 같은 유형이 있습니다:NONE: 히스토그램 없음 (기본 분포로 간주)HEIGHT BALANCED: 값 빈도 기준 분할FREQUENCY: 값 자체의 빈도 기록TOP-FREQUENCY: 자주 나오는 값만 추출HYBRID: 혼합형 (자동 생성 시 등장)3. 주요 컬럼 설명컬럼명설명TABLE_NAME히.. 2025. 8. 8.
[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통계 정보가 저.. 2025. 8. 8.
[ORACLE] USER_SUBPART_HISTOGRAMS 뷰로 히스토그램 기반 서브파티션 최적화하기 1. USER_SUBPART_HISTOGRAMS란?USER_SUBPART_HISTOGRAMS는 Oracle DB에서 사용자 소유 서브파티션 컬럼에 대한 히스토그램 통계 정보를 저장하는 데이터 딕셔너리 뷰입니다. 이 정보는 SQL 옵티마이저가 데이터 분포 특성을 기반으로 정확한 실행 계획을 수립할 수 있도록 지원합니다.2. 히스토그램의 중요성히스토그램은 컬럼 값의 분포 상태를 세분화하여 저장함으로써, 옵티마이저가 일반 통계만으로는 판단할 수 없는 편향된 데이터 분포를 고려할 수 있게 해줍니다.빈도 기반 히스토그램 (Frequency)높이 균등 히스토그램 (Height-balanced)Top-N 히스토그램 (12c 이상)Hybrid 히스토그램 (18c 이상)3. 주요 컬럼 설명컬럼명설명TABLE_NAME통계.. 2025. 8. 7.
728x90