본문 바로가기
Database/Oracle

[ORACLE] ALL_USTATS 뷰 심층 분석과 실무 활용 전략

by Papa Martino V 2025. 7. 6.
728x90

ALL_USTATS 뷰 심층 분석과 실무 활용 전략
[ORACLE] ALL_USTATS

 

Oracle 데이터베이스에서 통계(Statistics)는 쿼리 옵티마이저가 최적의 실행 계획을 수립하기 위해 필수적으로 사용하는 정보입니다. 사용자 정의 테이블과 인덱스의 최신 통계 정보는 성능 유지와 예측 가능한 실행 계획 수립에 있어 중요한 요소입니다. 이러한 정보를 확인할 때 활용되는 뷰가 바로 ALL_USTATS입니다.

ALL_USTATS 뷰란?

ALL_USTATS 뷰는 사용자가 접근할 수 있는 모든 테이블과 인덱스의 사용자 통계(User Statistics) 정보를 제공합니다. 이 뷰는 테이블 및 인덱스 통계의 존재 여부, 생성 일시, 분석 상태 등을 한눈에 확인할 수 있도록 설계되었습니다.

왜 중요한가?

옵티마이저는 테이블과 인덱스의 통계를 기반으로 쿼리 실행 계획을 작성합니다. 오래되거나 부정확한 통계는 잘못된 카디널리티 예측을 유발해 쿼리 성능 저하로 이어질 수 있습니다. ALL_USTATS 뷰를 통해 통계 상태를 모니터링하면 성능 문제를 사전에 예방할 수 있습니다.

주요 컬럼 설명

컬럼명 설명
OWNER 테이블 또는 인덱스 소유자
TABLE_NAME 테이블 이름
OBJECT_TYPE 객체 유형 (TABLE, INDEX 등)
STALE_STATS 통계가 오래되었는지 여부 (YES / NO)
LAST_ANALYZED 마지막 분석 일시
NUM_ROWS 행 개수 (테이블의 경우)
BLOCKS 사용된 블록 수

활용 예제

예를 들어, 분석이 오래된 통계 정보를 가진 테이블 목록을 조회하고 싶다면 아래와 같은 쿼리를 사용할 수 있습니다.

SELECT TABLE_NAME, STALE_STATS, LAST_ANALYZED
FROM ALL_USTATS
WHERE OWNER = 'HR'
  AND STALE_STATS = 'YES'
ORDER BY LAST_ANALYZED;
  

이 결과를 기반으로 DBMS_STATS 패키지를 사용해 최신 통계를 갱신하면 쿼리 성능을 크게 향상시킬 수 있습니다.

비슷한 뷰와의 비교

항목 ALL_TAB_STATISTICS ALL_USTATS
정보 범위 기본 테이블 통계 사용자 정의 통계 포함 통합 정보
활용 목적 기본 통계 상태 확인 전체 객체 통계 상태 점검 및 갱신
세부 수준 컬럼 통계 위주 테이블 및 인덱스 통합 관리

실무 활용 전략

  • 통계 최신화: ALL_USTATS 뷰를 기반으로 자동화 스크립트를 작성하여, 오래된 통계를 자동으로 갱신하도록 관리할 수 있습니다.
  • 성능 모니터링: 주기적으로 뷰를 조회해 분석 일시와 상태를 모니터링함으로써 예기치 않은 성능 저하를 예방합니다.
  • 쿼리 튜닝 검증: 통계 갱신 전후 쿼리 계획을 비교하여 성능 개선 효과를 정량적으로 평가할 수 있습니다.

활용 시 주의사항

  • 통계 갱신은 DML 작업과 병행될 경우 성능 부하를 유발할 수 있으므로, 가급적 비업무 시간대에 수행하는 것이 좋습니다.
  • Oracle 버전 및 패치에 따라 컬럼 구성과 일부 기능 차이가 있을 수 있으니, 최신 문서를 참고해야 합니다.
  • 자동 통계 수집(Job)이 활성화되어 있는 경우, 수집 정책과 ALL_USTATS 뷰 정보를 병행 검토해야 합니다.

결론

ALL_USTATS 뷰는 통계 관리와 쿼리 최적화를 위한 필수 도구로, 전체 테이블 및 인덱스의 성능 상태를 직관적으로 파악할 수 있게 해줍니다. 이를 적극 활용하면 데이터베이스의 안정성과 속도를 동시에 확보할 수 있습니다. DBA와 성능 담당자라면 반드시 숙지하고 활용해야 할 중요한 뷰라고 할 수 있습니다.

 

출처: Oracle Database Performance Tuning Guide, Oracle 19c/21c Reference Manual, DBA 실무 경험 기반 분석 자료.

728x90