본문 바로가기

ORACLE11g/SQL

[11gSQL] Optimizer 실행 계획 확인

Optimizer에 대한 간략한 정보


・Oracle Optimizer는 쿼리문을 분석하여 실행계획을 라이브러리 캐시 영역에 저장한다.


・Optimizer는 "Bester"가 아닌 "Optimizer(최적화)"이다.


・여러 번의 시행착오를 통해 최고의 결과를 만들어 내는 것이 아니라, 실행해 보기 전에 어떻게 처리할 것인가를 결정하는 것이다.


・Optimizer를 통해 최고의 결과를 얻으려면, 실행 계획을 획득할 줄 알아야 하며, 그 실행 계획을 해석할 줄 알아야 한다. 이를 통해 Optimizer가 좀 더 좋은 실행계획을 얻을 수 있도록 여러 Tuning 기법을 통해 최적의 결과를 유도할 줄 알아야 한다.




여기서는 실행 계획을 확인 하는 방법중의 하나인 Auto Trace를 이용해, 이전 포스팅에서 사용했던 쿼리문의 Cost를 간단하게 눈으로 확인해 보려고 한다.


AUTOTRACE를 사용하면

실행계획 및 통계를 볼 수 있음.

실행계획 및 통계를 확인하고자 하는 사용자는 plustrace role을 갖고 있어야 함.

실행계획 및 통계를 확인하고자 하는 사용자는 PLAN_TABLE이 필요함.


SQL> SET AUTOTRACE ON


명령어를 이용하여 Auto Trace(자동 추적) 기능을 활성화 한다.



일단 아래의 쿼리를 입력하면


Auto Tracer가 보여주는 실행 계획



위 쿼리가 어떤 과정을 거쳐

결과를 만들어 내는지 일목요연하게 나타난다.


어떤 테이블에 몇 번이나 접속하는지,

그에 대한 CPU비용은 얼마인지를 알려주고

그 정보를 통해서 가장 적합한 쿼리문을

찾아 갈 수 있다.


EMP테이블에 총 3번 ACCESS 하며,

총 51의 코스트를 사용한다는 것을 알 수 있다.

조회에 걸린 총 시간은 간편하게 8이라고 하겠다.



이전 포스팅에서 가장 마지막으로 사용했던

쿼리문을 입력해 보았다.



아래는 결과이다.



똑같은 결과를 만들어 내는 쿼리문임에도 불구하고


EMP테이블에 단 한번만 ACCESS하며,

총 11의 코스트를 사용했다.

사용된 총 시간은 3이다.



위와 같은 실행 계획을 조회하여

튜닝에 필요한 정보를 얻을 수 있는 것이

Auto Trace 기능이다.



마지막으로,

Auto Trace 기능을 끄려면


SET AUTOTRACE OFF

명령어를 입력하면 된다.


'ORACLE11g > SQL' 카테고리의 다른 글

[11gSQL] Non-Equi JOIN, Self JOIN  (0) 2016.10.18
[11gSQL] 6장 Equi JOIN(동등 조인)  (0) 2016.10.13
[11gSQL] 8장 UNION, MINUS, ROLLUP  (0) 2016.10.06
[11gSQL] 5장 GROUP BY  (0) 2016.10.04
[11gSQL] 조건문 간단한 문제  (0) 2016.10.04