티스토리 뷰
반응형
Oracle] 실행계획 보는 법
***설명
플랜에서 나오는 각 라인을‘로우 소스(Row Source)’라고 한다.
플랜을 보면서 처리 순서를 판단하는 것은 간단하다. 플랜은 트리 형태로 되어 있으며, 자신보다 하위 레벨이 있으면 하위 레벨부터, 같은 레벨이라면 위(상)의 로우소스부터 실행 된다.
위플랜의‘Optimizer=CHOOSE’에서알수있듯이해당SQL 문장은 옵티마이저 모드가 CHOOSE에서 플랜이 만들어진 것이다. 또한 플랜에서 ‘Cost=’의 항목이 나오면CBO로 풀렸다는 것이다. RBO인지 CBO인지의 판단은 옵티마이저 모드의 항목으로 판단하는 것이 아니라 ‘Cost=’로 판단한다는 것에 주의하자.
위 플랜에서 2개의 테이블 DEPT와 EMP 테이블 각각의 액세스 경로를 확인할 수 있다. 모두 인덱스를 사용하고 있는 것이다. 또한 조인메소드로는 Nested Loop Join이 사용되었다. 조인 순서는 자신보다 하위 레벨이 있으면 하위 레벨부터, 같은 레벨이라면 위의 로우 소스부터 실행된다는 법칙을 적용해보면, ID를기준으로4 -> 3 -> 5 -> 2 -> 1 -> 0의 순서로 처리 된다. 단 조인메소드가 Nested Loop이기 때문에 3에서 리턴되는 로우 수만큼 다음 단계가 반복된다. 그러므로 조인 순서는 DEPT -> EMP 순으로 Nested Loop로 처리될 것 이라는 것을 알 수 있다.
또한‘Card=5’는Computed Cardinality를나타내며, 몇 건의 로우가 리턴될 것인지를 CBO가 통계정보를 이용해서 계산해낸 값이다.
‘Bytes=250’은 리턴 될 로우들의 바이트를 나타내므로 5 로우에 250바이트 정도의 리턴 로우가 발생할 것이라는 것을 예측할 수 있다. 통계 정보만 정확하다면 이들 값도 상당히 정확하다고 보면 된다.
Execution Plan을제대로보기위해서는,
• 각 데이타베이스 사용자마다 PLAN_TABLE이 있어야 하는데, PLAN_TABLE은 오라클 버전마다 다르다. 해당 오라클 버전의 $ORACLE_HOME/rdbms/admin/utlxplan.sql을 실행하면 만들어진다.
• SQL을 실행하지 않고 Trace만 보는 방법도 있다.
• EXPLAIN PLAN’<리 스 트 1>, SQL*Plus의‘ SET AUTOTRACE TRACEONLY EXPLAIN’<리스트 2>.
• 플랜을PLAN_TABLE에서 확인할 수도 있다.
Oracle8i Database 이전까진 Plan_Table에서 직접 선택하고, Oracle8i Database 이상부터는 Plan_Table에서 직접 선택하거나 $ORACLE_HOME/rdbms/admin 위치에서 utxpls.sql(Serial Plan) 또는 utlxplp.sql(Parallel Plan) 스크립트를 실행하면 된다. Oracle9i Database 이전에서는 utxpls.sql, utlxplp.sql 외에‘select * from table(dbms_xplan.display);’
[출처] 오라클 실행 계획 보는 법|작성자 잿빛천사
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빈센트 반 고흐
- 홈 오피스
- 브리다 정수기
- 별잉 빛나는 밤
- 오미크론
- Life Chair
- 유가바이트디비
- 파나소닉 비데 DL-EH10KWS
- Pixel Pals
- GKRS
- JMW 헤어드라이기기
- node.js
- 루미큐브 종류
- 남설 팔찌
- weka
- 카카오 에드
- yugabyteDB
- 로니카 BCS
- 화분벌레
- 톡토기
- 증권정보포털
- VARIDESK
- Sybase IQ
- 코라나 19
- 배당급
- 르세라핌
- 별이 빚나는 밤
- 고체 향수
- 솔리드 쿨론
- 매직 트랙패드2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함