본문 바로가기
728x90

DBMS_STATS10

[ORACLE] DBA_ANALYZE_OBJECTS 완벽 가이드 : 통계 수집과 성능 최적화의 핵심 Oracle 데이터베이스의 성능 최적화는 결국 정확한 통계 정보(statistics)에서 출발합니다. 옵티마이저(Optimizer)는 실행 계획을 결정할 때 테이블, 인덱스, 파티션 등의 통계 정보를 참조합니다. 이 통계가 오래되었거나 잘못된 경우, 실행 계획이 비효율적으로 선택되어 전체 시스템 성능이 저하될 수 있습니다. 이때 중요한 관리 뷰 중 하나가 바로 DBA_ANALYZE_OBJECTS입니다. 이 글에서는 DBA_ANALYZE_OBJECTS의 구조, 기능, 활용 사례, 그리고 실무 최적화 전략까지 전문가 관점에서 깊이 있게 다루겠습니다.1. DBA_ANALYZE_OBJECTS란 무엇인가?DBA_ANALYZE_OBJECTS 뷰는 Oracle 내부에서 수행되는 통계 분석(Analyze Statist.. 2025. 10. 13.
[ORACLE] DBA_HISTOGRAMS 완전 해설 및 실무 활용 가이드 1. 개요DBA_HISTOGRAMS 뷰는 Oracle 옵티마이저가 통계 정보를 활용해 효율적인 실행 계획을 수립할 수 있도록 지원하는 핵심 데이터 딕셔너리입니다. 이 뷰는 테이블 컬럼의 데이터 분포(Distribution)를 세밀하게 저장하며, 히스토그램(Histogram) 기반으로 쿼리 성능을 최적화할 수 있게 해줍니다. 즉, 동일한 SQL 문이라도 데이터의 실제 분포에 따라 다르게 실행 계획을 수립할 수 있는 근거가 되는 뷰입니다.2. DBA_HISTOGRAMS의 역할데이터베이스 옵티마이저는 테이블 통계 정보를 기반으로 각 쿼리의 실행 비용을 계산합니다. 이때 단순히 평균값만을 사용하는 것이 아니라, 컬럼 값의 비균등 분포(skewness)를 고려해야 하는 경우가 많습니다. 이를 위해 Oracle은 .. 2025. 10. 12.
[ORACLE] ALL_HISTOGRAMS 완전 정복 : 옵티마이저를 움직이는 히스토그램 이해와 실전 튜닝 ALL_HISTOGRAMS는 컬럼 값의 분포를 버킷(bucket) 단위로 저장해 옵티마이저(Optimizer)의 선택도(Selectivity) 추정에 직접적인 근거를 제공하는 핵심 딕셔너리 뷰입니다. 스큐(Skew) 여부, 상·하위 빈도값, 경계값 변화폭을 정밀하게 파악해 조인 순서, 접근 경로, 인덱스 사용 여부 등 실행계획의 품질을 가르는 지점에서 결정적인 인사이트를 줍니다.왜 ALL_HISTOGRAMS를 봐야 하는가?실제 분포 파악: 평균치 기반 카디널리티 착시를 방지(특히 편향 데이터).계획 재현·비교: 통계 스냅샷 간 버킷 경계 변화로 계획 변화 원인 추적.힌트 최소화: 통계만 바로잡아도 힌트 없는 안정적 실행계획 유도.핵심 개념 요약버킷(bucket): 값 구간을 뜻합니다. 각 버킷의 끝점(E.. 2025. 10. 10.
[ORACLE] USER_USTATS : 통계 수집 상태 및 최적화 전략 완전 분석 1. USER_USTATS란?USER_USTATS는 Oracle 데이터베이스에서 현재 사용자 스키마의 오브젝트(테이블, 인덱스 등)에 대한 **사용자 수집 통계(Statistics)** 정보를 보여주는 뷰입니다. Oracle 옵티마이저는 통계 정보를 바탕으로 최적의 실행 계획을 생성하기 때문에, 통계 정보의 수집 여부와 정확성은 쿼리 성능에 직접적인 영향을 미칩니다. 이 뷰는 DBMS_STATS 패키지를 통해 수집된 통계가 **사용자 정의로 존재하는지, 시스템에서 수집된 것인지**를 판단하는 데 유용하며, 실무에서는 통계 오류, 통계 누락, 통계 수동 고정 등에 대한 진단을 위해 활용됩니다.2. 주요 컬럼 설명컬럼명설명OBJECT_NAME통계 정보가 수집된 객체 이름OBJECT_TYPE객체 유형 (TAB.. 2025. 8. 12.
[ORACLE] USER_TAB_MODIFICATIONS 뷰로 통계 갱신 타이밍 완벽 제어하기 1. USER_TAB_MODIFICATIONS란?USER_TAB_MODIFICATIONS는 Oracle에서 통계 정보 갱신 필요성을 판단하기 위해 테이블의 변경 내역을 추적하는 데이터 딕셔너리 뷰입니다. 이 뷰는 데이터가 얼마나 변경되었는지를 기반으로 통계 갱신 타이밍을 결정할 수 있게 해주며, 대용량 데이터 관리 및 SQL 성능 유지에 매우 중요합니다.2. 주요 컬럼 설명컬럼명설명TABLE_NAME변경 이력을 추적하는 대상 테이블 이름INSERTS통계 수집 이후 발생한 INSERT 횟수UPDATES통계 수집 이후 발생한 UPDATE 횟수DELETES통계 수집 이후 발생한 DELETE 횟수TIMESTAMP마지막 통계 수집 이후 변경이 추적된 시간TRUNCATED테이블이 TRUNCATE 되었는지 여부 (Y.. 2025. 8. 8.
[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.
728x90