트러블슈팅 오라클 퍼포먼스 2판 (2017년)
펜딩 오브젝트 통계로 작업하기 0 0 43,326

by 구루비스터디 오브젝트통계 DBMS_STATS [2023.09.09]


글로벌 임시 테이블로 작업하기

  • 11.2버전까지 글로벌 임시 테이블(Global Temporary Table)은 통계를 수집할 수 없었다.( DBMS_STATS 처리 시작단계에서 commit을 수행하기 때문)
  • 12.1 버전부터 통계를 수집할 수 있도록 지원됐다. 일반 테이블처럼 GATHER_TABLE_STATS 프로시저를 이용하면 된다.


펜딩 오브젝트 통계로 작업하기

  • 11.1버전부터 수집한 통계를 딕셔너리에 바로 반영(publish)하지 않는, 테스트목적의 통계수집이 가능하게 되었다.



-- PUBLISH를 FALSE로 하여 통계에 자동반영되지 않도록 설정한다.
  DBMS_STATS.SET_TABLE_PREFS(
    ownname => user,
    tabname => 't',
    pname   => 'publish',
    pvalue  => 'false'
  );

  DBMS_STATS.GATHER_TABLE_STATS(
    ownname          => user,
    tabname          => 'T',
    estimate_percent => 100,
    method_opt       => 'for all columns size 1',
    cascade          => TRUE
  );

-- 세션이나 힌트등을 사용해 통계가 미치는 영향을 테스트 한다.
SELECT /*+ opt_param('optimizer_use_pending_statistics' 'true') */ * FROM t;
ALTER SESSION SET optimizer_use_pending_statistics = TRUE;

-- 테스트가 성공적이면 딕셔너리에 반영한다.
DBMS_STATS.PUBLISH_PENDING_STATS(ownname => user, tabname => 'T');

-- 테스트에 실패했다면 통계를 삭제한다.
DBMS_STATS.DELETE_PENDING_STATS(ownname => user, tabname => 'T');

-- 통계수집 시 딕셔너리에 자동반영되도록 상태를 설정한다.
  DBMS_STATS.SET_TABLE_PREFS(
    ownname => user,
    tabname => 't',
    pname   => 'publish',
    pvalue  => 'true'
  );

"데이터베이스 스터디모임" 에서 2017년에 "전문가를 위한 트러블슈팅 오라클 퍼포먼스(Second Edition) " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4381

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입