db PLAN 정보의 의미

PLAN 정보의 의미

EXPAIN PLAN 명령어는

1) 옵티마이져가 SELECT, UPDATE, INSERT, DELETE을 실행하기 위해 선택한 실행계획을 보여준다. 
2) 실행계획이란 옵티마이져가 특정 SQL문을 실행하기 위해 수행한 일련의 동작(OPERATIONS)을 트리형식으로 표현한 것이다.
3) EXPAIN PLAN의 결과는 사용자로 하여금 옵티마이져가 왜 특정 실행계획을 선택했는지를 이해할 수 있게 해주고 쿼리문의 성능을 판단하는데 도움을 준다.

실행계획은 다음과 같은 정보를 포함하고 있다.

1) 쿼리문이 참조한 테이블들의 순서
2) 쿼리문이 참조한 테이블들의 접근방법(ACESS PATH)
3) 조인에 의해 영향받는 테이블들의 조인방법(JOIN MEHTOD)
4) 데이터 조작방법(filter, sort, or aggregation,etc)

EXPLAIN PLAN 과 EXECUTION PLANS

- EXPLAIN PLAN(예측 실행 계획) 의 결과와 EXECUTION PLANS(실행 계획)는 서로 다를 수 있다. 서로 다른 데이터베이스를 참조하거나, 같은 데이터베이스의 서로 다른OBJECTS를 참조하는 경우 차이가 발생한다. 설혹 같은 데이터베이스의 같은 OBJECT를 참조할지라도 다음과 같은 요인에 의해 달라질 수가 있다.

1) Data volume and statistics
2) Bind variable types and values
3) Initialization parameters - globally or session level

EXPLAIN PLAN는 사용자가 다음과 같은 피해야하는 항목들을 파악할 수 있게 해준다.

1) Full scans : 의도하지 않은 Full scans 
2) Unselective range scans : 100건을 조회하기 위해 백만건을 스캔하는 경우
3) Late predicate filters : ?
4) Wrong join order : 잘못된 조인순서는 처리범위를 증가시킨다.
5) Late filter operations : 필터로 버릴 것이 있다면 조인 전에 필터하는 것이 좋다.

EXPLAIN PLAN 의 제약사항

1) 바이드변수에 대해서는 정확한 실제계획을 보여주지 못한다.
2) 암묵적인 형변환에 대해서도 정확한 예측을 하지 못한다.

참조