Database/Tibero
Tibero 통계정보 생성 가이드
컴퓨터파르페개발자
2024. 7. 29. 17:15
개요
Optimizer는 실행 가능한 Plan 중에서 자원 사용에 대한 비용이 가장 낮은 것을 기반으로 최적화를 수행하며
이것을 Cost Based Optimizer(CBO)라고 한다.
낮은 비용은 더 효율적인 실행 계획을 수행할 수 있기 때문에 실행 계획에 대한 정확한 비용을 산정하기 위해서는
SQL 문이 접근하는 모든 Object에 대한 정보와 SQL 문이 실행되는 System에 대한 정보가 필요하다.
Table과 Index를 포함한 모든 Object 정보 및 System 정보를 Optimizer 통계라고 한다.
적정한 성능을 유지하기 위해서는 효율적인 통계 정보 수집 시간과 수집 방법을 결정해야 하며 이를 위해서는
Optimizer 통계의 특성과 통계 수집 방법을 숙지하는 것이 SQL을 최적화하여 실행하는 가장 중요한 요소이다.
통계정보란?
Optimizer가 실행계획을 작성할 때 참조하는 정보
통계 정보 수집 전략
통계 수집 주기
데이터의 변화량이 많을 수록 수집 주기를 짧게 설정
통계 수집 시점
데이터 갱신이 갑자기 증가하거나 새로 생성되는 Object가 있는 경우
자동 통계 수집 vs 수동 통계 수집
자동 통계 수집 기능은 운영 시스템의 환경별로 사용 여부를 결정해야 한다. 일반적으로 중, 대형 이상의 업무 환경 시스템일 경우는 자동 통계 수집 기능은 사용하지 않도록 권장한다. 이러한 시스템을 운영하는 Database 관리자는 Object별 전략을 세우고 정확하고 안정적인 통계 정보를 수동으로 수집할 수 있도록 준비하는 것이 좋다.
Tibero 자동 통계 수집 제어 방법 (테이블 단위)
Lock
exec dbms_stats.lock_table_stats('owner명','테이블명');
Unlock
exec dbms_stats.unlock_table_stats('owner명','테이블명');
Tibero 수동 통계 수집 방법
재수집 전 해당 테이블 통계정보 삭제
exec DBMS_STATS.DELETE_TABLE_STATS(ownname=>'owner명',tabname=>'테이블명');
테이블 통계 재수집
exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'owner명',tabname=>'테이블명’, estimate_percent=>10);