[Oracle] 실행계획(Explain plan/Execution plan)

개발자/Oracle | 2015. 8. 2. 10:04

SQL *Plus 에서의 실행계획

- 실행계획(Explain plan) 테이블 생성 ( TABLESPACE TOOLS; 구문 추가 --> SYSTEM테이블 스페이스 외의 테이블 스페이스 생성)

- 주기적으로 이 테이블을 TRUNCATE 하면서 운영.

- SYSTEM 데이터베이스 계정으로 접속해서 utlxplan.sql 파일을 실행.

- PLAN_TABLE에 SYNONYM(시노님)과 GRANT(권한부여) 명령으로 적절한 권한 생성.


AUTOTRACE 기능의 활성화

- $ORACLE_HOME/sqlplus/admin 디렉토리 안의 plustrace.sql 을 실행시켜 AUTOTRACE 기능을 활성화

@plustrce

GRANT PLUSTRACE TO PUBLIC;

--> PLUSTRACE 롤을 PUBLIC에 부여.


활용

- SET AUTOTRACE ON 

  : SQL을 실행하여 얻어진 결과 셋 외에, 그 쿼리에 관련된 실행계획과 SQL 실행에 소모된 통계 리소스(비용) 현황을 보여준다.

- SET AUTOTRACE TRACEONLY

  : SQL을 실행하나, 결과 셋을 출력하지는 않는다. 실행계획과 실행에 수반된 리소스/비용 정보만 출력된다.

- SET AUTOTRACE TRACEONLY EXPLAIN

  : SQL을 실행시키지 않으며, 단지 실행계획만 보여준다. 즉 쿼리를 실행하지 않고, 그 쿼리의 실행계획만을 알고 싶을때 사용하는 옵션이다. 


Statistics (통계정보라기보다는, SQL 수행에 드는 비용..)

- db block gets  +  consistent get = 논리적 읽기(logical reads)라고 일컫는다.

- 반대되는 개념이 물리적 읽기(physical reads)이다.

- physical reads 

  : 로우를 추출하기 위해 디스크로부터 데이터 블록을 읽어들인 횟수

- logical reads

  : 물리적 디스크가 아닌 데이터베이스 버퍼 캐시 내에서 읽어들인 횟수

* physical reads 또는 logical  reads 값이 클 수록 개선의 여지가 많은 쿼리라 볼수 있다. 

  논리적I/O와 물리적 I/O값을 SQL튜닝을 통해 전후 비교하여 성능개선 여부를 판단할 수 있다. 


Read-consistent 모드로 페치된 블록들 (SELECT문) 은 consistent get 으로 기록.

Commit없이  INSERT/UPDATE/DELETE  에 의해 변경된 블록들을 패치하는 경우는 'db block gets' 횟수로 기록.






'개발자 > Oracle' 카테고리의 다른 글

[Oracle] 실행계획(Explain Plan)  (0) 2015.08.09
,