반응형

옵티마이저(Optimizer)

반응형

Analzyze 명령어는 테이블, 인덱스, 클러스터의 통계 정보를 생성하는데, 이 통계 정보들은 비용 기준의 옵티마이저가 가장 효율적인 실행계획을 수립하기 위해 최소비용을 계산할 때 중요하게 사용됩니다.


오라클에서는 SPOOL 기능을 이용하여 txt파일이나 sam파일에 검색된 데이터를 저장할 수 있다.


Analyze에서는 테이블, 인덱스, 클러스터에 다양한 통계를 얻기 위해 전체(compute) 테이블을 엑세스하여 수집, 계산하거나, 일부의 표본을 추출해(estimate) 산정합니다. 전체 테이블에 대한 통계 작업을 권장하지만 데이터가 많은 경우에는 시스템에 부하를 줄 수 있으므로 작업 시간 조정이 필요합니다.


FIRST_ROWS : CBO의 일종으로 전체 응답시간에 관계없이 일부 데이터를 먼저 보여 줄 수 있도록 최적화된 모드, ON_LINE처리 시에 좋은 성능을 발휘한다.


테이블을 ANALYZE하면 INDEX들을 같이 ANALYZE 됩니다.


많은 테이블을 일일이 작업하기가 힘드므로, 다음 SQL문의 결과 FILE을 생성해 주기적으로 ANALYZE 작업을 해주는 것이 좋습니다.


-- header가 display되지 않고 데이터만 display

set heading off

-- pagesize의 default는 14이며 그대로 하면 14줄마다 1줄씩 공백이 생기므로 그런 현상을 방지하기 위해 크게 지정

-- linesize도 80으로 크게 지정 그럼으로해서 아래로 구분되지 않도록 한다

set pagesize 1000 linesize 80

-- 조회 결과가 화면에 나오지 않도록하고

-- 명령이 display되지 않고

-- 피드백 메세지도 리턴되지 않도록 하기

set termout off echo off feedback off


-- data가 들어가는 파일 이름을 지정

spool  analyze_tab.sql


SELECT 'ANALYZE TABLE '||TABLE_NAME||

       ' COMPUTE STATISTICS; '||CHR(10)

  FROM USER_TABLES;


spool off


set termout on echo on feedback on heading on


-- ANALYZE 작업 여부 쉽게 알 수 있는 방법

SELECT TABLE_NAME, LAST_ANALYZED, NUM_ROWS

FROM USER_TABLES;


-- 다량의 테이블을 analyze하면서 기본적인 로그 사항이 필요한 경우

PROMPT

PROMPT  'EX06 : Analyze 작업에 대한 log 생성'

PROMPT


set heading off

set pagesize 1000 linesize 80

set termout off echo off feedback off


spool  analyze_tab.sql


SELECT 'prompt '||chr(10),

       'prompt '||rownum||'.'||table_name||chr(10),

       'analyze table '||table_name||' compute statistics; '

       ||chr(10)

  FROM USER_TABLES

/


spool off


spool analyze.log


prompt

prompt =============

prompt


prompt 'Start Time !'

select TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS') NOW from dual

/


start analyze_tab.sql


prompt

prompt 'Ended Time !'

select TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS') NOW from dual

/

spool off


set termout on echo on feedback on heading on


반응형

이 글을 공유하기

댓글

Designed by JB FACTORY