오라클 인덱스 통계 갱신의 목적과 효과

2025. 2. 2. 23:31IT/Oracle

반응형

1. 📌 통계 갱신의 목적

  • 정확한 통계 정보 유지
    • 옵티마이저가 쿼리 실행 계획을 생성할 때 테이블/인덱스 통계를 참조
    • 데이터 변경 시 통계가 실제와 불일치할 수 있음 → 성능 저하
  • 최적의 실행 계획 수립
    • 최신 통계를 바탕으로 테이블 스캔 vs 인덱스 스캔 등 효율적인 접근 경로 선택
  • 자원 활용 최적화
    • 정확한 통계는 CPU, 메모리, I/O 리소스를 효율적으로 사용하도록 유도

2. ✅ 통계 갱신의 효과

  • 적절한 인덱스 선택 유도
    • 옵티마이저가 Selectivity(선택도)가 높은 인덱스를 우선 사용
  • 실행 계획 개선
    • 최신 데이터 분포에 맞는 효율적인 쿼리 경로 생성
  • 불필요한 Full Table Scan 방지
    • 응답 시간 단축 및 I/O 부하 감소
  • 클러스터링 팩터 반영
    • 인덱스 정렬 상태를 반영해 효율적인 인덱스 스캔 유도
  • 데이터베이스 전반 성능 향상
    • 특히 대용량 테이블, 복잡한 쿼리에서 효과적

3. 🔄 통계 갱신 방법

  • ① 수동 갱신
     
     
  • ② 자동 갱신
    • Oracle은 기본적으로 자동 통계 수집(AUTO_TASKS) 또는 DBMS_SCHEDULER를 통해 주기적으로 수행
-- 테이블 통계 EXEC DBMS_STATS.GATHER_TABLE_STATS('스키마명', '테이블명'); 
-- 인덱스 통계 EXEC DBMS_STATS.GATHER_INDEX_STATS('스키마명', '인덱스명');

 

4. 📍 통계 갱신이 필요한 시점

  • 데이터 변경률이 높은 테이블 (삽입/삭제/갱신 빈번)
  • 신규 인덱스 생성 후
  • 쿼리 성능 저하 및 실행 계획 비효율 발견 시
  • 대규모 데이터 로딩 이후

5. ⚠️ 주의 사항

  • 업무 외 시간대에 수행 권장 (시스템 부하 방지)
  • 변동이 적은 정적 테이블은 과도한 통계 갱신을 피함
  • 통계 갱신 전후에 실행 계획 변화 추적 권장
반응형