통계정보
3. 통계정보 수집
DBMS_STATS 패키지 프로시저를 이용해 통계정보를 수집합니다.
- GATHER_DATABASE_STATS
데이터베이스의 모든 Object에 대한 통계정보를 생성합니다.
Example
SQL> execute dbms_stats.gather_table_stats('SCOTT', 'EMP');
SQL> exec dbms_stats.gather_table_stats(ownname=>'TIBERO',
tabname=>'ACS01',
estimate_percent=>100 );
|
- GATHER_SCHEMA_STATS
스키마의 Object에 대한 통계정보를 생성합니다.
- GATHER_TABLE_STATS
테이블과 관련있는 인덱스에 대한 통계정보를 생성합니다.
- GATHER_INDEX_STATS
인덱스에 대한 통계정보를 생성합니다.
- estimate_percent 파라미터
생성 시간 단축을 위해, 테이블 일부분만을 샘플링해 통계정보를 생성합니다.
파라미터 >0 : 테이블 전체 대비 수집 비율입니다.
파라미터 =0 : 간단한 샘플링으로 예상되는 row 의 개수를 계산합니다.
row 개수에 따라 수집 속도 및 정확성을 고려한 최적의 수집비율을 산출합니다.
3.1. GATHER_DATABASE_STATS 파라미터
DBMS_STATS.GATHER_DATABASE_STATS의 options 파라미터로,
수집할 테이블의 기준을 정합니다.
- GATHER
모든 테이블에 대해 수집합니다.
- GATHER EMPTY
통계 정보가 없는 테이블을 수집합니다.
- GATHER STALE
마지막 통계정보 수집 이후 변경이 발생한 Row수가 전체 10% 넘는 테이블을 수집합니다.
- GATHER AUTO
자체적 기준에 맞는 테이블만을 수집하는 파라미터로, 아래 중 하나 이상의 조건을 만족하는
테이블을 수집합니다.
- 통계 정보가 수집된지 1주일 넘은 테이블 (_DBMS_STATS_GATHER_AUTO_STALED)
- GATHER EMPTY 조건의 테이블
- 통계 정보에서 row 개수가 0으로 저장된 테이블
- GATHER STALED 조건의 테이블
4. 통계정보 조회
통계정보를 생성 후 조회합니다.
- [DBA|ALL|USER]_TABLES : 테이블의 통계정보를 조회합니다.
- [DBA|ALL|USER]_INDEXES : 인덱스의 통계정보를 조회합니다.
- [DBA|ALL|USER]_TAB_HISTOGRAMS : 컬럼의 데이터 분포도 정보를 조회합니다.
Example
SQL> select table_name, num_rows, blocks, avg_row_len,
sample_size, last_analyzed
from dba_tables
where owner='TIBERO'
and table_name='ACS01';
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZE
------------------- ------------------- ------------- ----------------------------
ACS01 1000000 5504 2016/09/23 16:32:01
1 row selected.
|
5. 통계정보 Export 및 Import
기존의 실행계획대로 다른 데이터베이스에서 동일하게 운영하고 싶을 때
통계정보를 export 및 Import로 통계정보를 일치시킵니다.
티베로에서는 아래의 프로시저를 지원합니다.
DBMS_STATS.EXPORT_XXX_STATS
DBMS_STATS.IMPORT_XXX_STATS
- 해당 테이블에 대해 EXPORT_XXX_STATS 프로시저로 통계 정보를 별도의 테이블에
저장합니다.
- 쿼리에 사용된 테이블 및 통계정보 테이블을 tbexport로 dump 수행 후, 대상 시스템으로
이관합니다.
- 대상 시스템에서 tbimport를 이용해 통계 정보를 import 합니다.
6. 기타 통계정보 수집 방법
6.1. Degree
통계 정보 수집을 parallel하게 해서 빠르게 처리하고자 할 때 사용하는 파라미터 입니다.
SQL문에서의 parallel hint와 같은 원리로 기본값은 1 입니다.
6.2. Granularity
Partitioned 테이블에서의 통계 정보 수집 영역 입니다.
• PARTITION : 파티션 단위
• GLOBAL : 테이블 전체
• ALL : 파티션 테이블 전체 및 파티션 각각 모두 포함
☞[Tibero] SQL Tuning (10)에서 계속됩니다.
'튜닝' 카테고리의 다른 글
[Tibero] SQL Tuning (12) (0) | 2023.06.13 |
---|---|
[Tibero] SQL Tuning (11) (0) | 2023.06.12 |
[Tibero] SQL Tuning (9) (0) | 2023.06.08 |
[Tibero] SQL Tuning (8) (0) | 2023.06.08 |
[Tibero] SQL Tuning (7) (0) | 2023.06.05 |