본문 바로가기
Database/Oracle

[ORACLE] USER_TAB_MODIFICATIONS 뷰로 통계 갱신 타이밍 완벽 제어하기

by Papa Martino V 2025. 8. 8.
728x90

USER_TAB_MODIFICATIONS 뷰로 통계 갱신 타이밍 완벽 제어하기
[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 되었는지 여부 (YES/NO)

3. 작동 방식

  • 이 뷰는 MONITORING 속성이 설정된 테이블에 대해만 동작합니다.
  • 변경 이력은 **백그라운드 작업(Flush)** 후 반영됩니다.
  • 실시간 반영이 아니라, 통계 갱신 또는 일정 시간 간격 후 DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO 호출 시 반영됩니다.

4. 실전 활용 예제

-- 최근 변경된 테이블 확인
SELECT TABLE_NAME, INSERTS, UPDATES, DELETES, TIMESTAMP
FROM USER_TAB_MODIFICATIONS
WHERE INSERTS + UPDATES + DELETES > 0;

-- 수동으로 모니터링 정보 반영
EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
      

5. 관련 뷰 비교

뷰 이름 역할 설명
USER_TAB_MODIFICATIONS 테이블 변경 이력 통계 정보 기준으로 INSERT/UPDATE/DELETE 횟수 추적
USER_TAB_STATISTICS 통계 정보 행 수, 블록 수, LAST_ANALYZED 등
DBA_TAB_MODIFICATIONS 전체 사용자 변경 이력 DBA 권한 필요

6. 고급 활용 전략

  • 자동 통계 수집 우선순위 설정: 변경 건수가 많은 테이블을 우선 처리
  • 야간 배치 스크립트 작성: 통계 갱신 대상만 필터링하여 성능 최적화
  • TRUNCATE 탐지: TRUNCATED='YES'인 테이블은 반드시 재수집 필요

7. 결론

USER_TAB_MODIFICATIONS 뷰는 Oracle 데이터베이스에서 성능 유지와 통계 수집 전략을 지능적으로 제어하는 데 핵심적인 도구입니다. 특히 대규모 시스템에서는 불필요한 통계 수집을 줄이고, 실제 변경된 테이블만 추적하여 효율적인 리소스 운용이 가능합니다.

참고 자료

728x90