본문 바로가기
728x90

Optimizer3

[ORACLE] DBA_HISTOGRAMS 완전 해설 및 실무 활용 가이드 1. 개요DBA_HISTOGRAMS 뷰는 Oracle 옵티마이저가 통계 정보를 활용해 효율적인 실행 계획을 수립할 수 있도록 지원하는 핵심 데이터 딕셔너리입니다. 이 뷰는 테이블 컬럼의 데이터 분포(Distribution)를 세밀하게 저장하며, 히스토그램(Histogram) 기반으로 쿼리 성능을 최적화할 수 있게 해줍니다. 즉, 동일한 SQL 문이라도 데이터의 실제 분포에 따라 다르게 실행 계획을 수립할 수 있는 근거가 되는 뷰입니다.2. DBA_HISTOGRAMS의 역할데이터베이스 옵티마이저는 테이블 통계 정보를 기반으로 각 쿼리의 실행 비용을 계산합니다. 이때 단순히 평균값만을 사용하는 것이 아니라, 컬럼 값의 비균등 분포(skewness)를 고려해야 하는 경우가 많습니다. 이를 위해 Oracle은 .. 2025. 10. 12.
[ORACLE] ALL_OUTLINES 완전 가이드 : 개념 활용 예제 SPM 전환 전략 1. 개요ALL_OUTLINES 뷰는 Oracle Database의 SQL 성능 안정성을 유지하기 위한 핵심 데이터 사전 뷰로, Optimizer가 생성한 실행 계획을 Stored Outline 형태로 저장하여 동일한 SQL 문이 동일한 실행 계획으로 수행되도록 보장하는 기능을 제공합니다. 이 뷰는 SQL 실행 계획의 일관성을 유지하고, 시스템 업그레이드나 통계 변경 이후에도 예측 가능한 성능을 확보하기 위한 필수 요소입니다.2. 등장 배경Oracle Optimizer는 통계 정보, 인덱스 구성, 파라미터 설정 등에 따라 실행 계획이 변동될 수 있습니다. 이러한 변화를 제어하기 위해 Oracle은 Stored Outline 기능을 도입했으며, 그 정보가 바로 ALL_OUTLINES 뷰에 저장됩니다. 따라.. 2025. 10. 10.
[ORACLE] ALL_HISTOGRAMS 완전 정복 : 옵티마이저를 움직이는 히스토그램 이해와 실전 튜닝 ALL_HISTOGRAMS는 컬럼 값의 분포를 버킷(bucket) 단위로 저장해 옵티마이저(Optimizer)의 선택도(Selectivity) 추정에 직접적인 근거를 제공하는 핵심 딕셔너리 뷰입니다. 스큐(Skew) 여부, 상·하위 빈도값, 경계값 변화폭을 정밀하게 파악해 조인 순서, 접근 경로, 인덱스 사용 여부 등 실행계획의 품질을 가르는 지점에서 결정적인 인사이트를 줍니다.왜 ALL_HISTOGRAMS를 봐야 하는가?실제 분포 파악: 평균치 기반 카디널리티 착시를 방지(특히 편향 데이터).계획 재현·비교: 통계 스냅샷 간 버킷 경계 변화로 계획 변화 원인 추적.힌트 최소화: 통계만 바로잡아도 힌트 없는 안정적 실행계획 유도.핵심 개념 요약버킷(bucket): 값 구간을 뜻합니다. 각 버킷의 끝점(E.. 2025. 10. 10.
728x90