- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
ORACLE EXPLAIN PLAN 과 explain plan 보기 위한 토드 설정
2020.06.12 17:36
EXPLAIN PLAN 과 explain plan 보기 위한 토드 설정
로컬에서 테스트 할 때,
1. 실행시킬 쿼리 위에서 드래그 하여 반전 시킨 후 Ctrl + e
2. 실행계획 보기 위한 설정이 되어 있지 않으면 아래 창이 뜸.

혹시 로컬에서 테스트 중이 아니고 개발장비에 연결된 상태라면
수정해 줘야 함.
테이블명, 테이블 스페이스, 테이블 오너(스키마) 다 수정해야 함.
수정한 후 토드로 와서 view > toad option > Oracle - general 에서 오른 쪽에 explain plan 부분에
테이블명, 테이블 오너(스키마) 를 개발장비에 맞는 이름으로 수정해 줘야 함.
(아마도 개발장비에는 각 유저들에게
grant all on v_$sesstat to public ;
grant all on v_$statname to public ;
grant all on v_$session to public ;
다 되어 있을 것. 권한은 신경쓰지 않아도 될 것임)
로컬에서 하는 중이라면 그냥 ok 누른다.
아래 창이 뜰 것.

그냥 ok 누른다. 그럼 또 아래 창이 뜰 것.

아무것도 입력하지 말고 ok 누른다.
3. 로컬에서 테스트 중일경우 sys 로 로그인해서
grant all on v_$sesstat to public ;
grant all on v_$statname to public ;
grant all on v_$session to public ;
해 줘야 함.
4. 이후 토드 재실행 하고 나서 sql 문 드래그로 반전시킨 후 Ctrl + e 누르면 실행계획 볼 수 있음.
*******************************************************************************
5. 아래는 http://www.gurubee.net/pages/viewpage.action?pageId=688200 에서 가져 온 것.
실행계획 보는 순서.
- 같은 레벨이라면 위에서 아래로 실행되었다는 것.
- 자신보다 하위레벨이 있으면 하위레벨이 먼저 실행되었다는 것.
1. EXPAIN PLAN 명령어는 옵티마이져가 SELECT, UPDATE, INSERT, DELETE을 실행하기 위해 선택한 실행계획을 보여준다.
실행계획이란 옵티마이져가 특정 SQL문을 실행하기 위해 수행한 일련의 동작(OPERATIONS)을 트리형식으로 표현한 것이다.
EXPAIN PLAN의 결과는 사용자로 하여금 옵티마이져가 왜 특정 실행계획을 선택했는지를 이해할 수 있게 해주고 쿼리문의 성능을 판단하는데
도움을 준다.
2. 실행계획은 다음과 같은 정보를 포함하고 있다.
1) 쿼리문이 참조한 테이블들의 순서
2) 쿼리문이 참조한 테이블들의 접근방법(ACESS PATH)
3) 조인에 의해 영향받는 테이블들의 조인방법(JOIN MEHTOD)
4) 데이터 조작방법(filter, sort, or aggregation,etc)
3. 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
4. EXPLAIN PLAN는 사용자가 다음과 같은 피해야하는 항목들을 파악할 수 있게 해준다.
1) Full scans : 의도하지 않은 Full scans
2) Unselective range scans : 100건을 조회하기 위해 백만건을 스캔하는 경우
3) Late predicate filters : ?
4) Wrong join order : 잘못된 조인순서는 처리범위를 증가시킨다.
5) Late filter operations : 필터로 버릴 것이 있다면 조인 전에 필터하는 것이 좋다.
5. EXPLAIN PLAN 의 제약사항
1) 바이드변수에 대해서는 정확한 실제계획을 보여주지 못한다.
2) 암묵적인 형변환에 대해서도 정확한 예측을 하지 못한다.
6. EXPLAIN PLAN을 파악하는데 도움이 되는 시스템 뷰
1) V$SQL_PLAN : PLAN_TABLE과 거의 유사하다. PLAN_TABLE보다 좋은 점은 특정 쿼리문이 실행되는데 사용되는 컴파일 환경을 알 필요가
없다.EXPLAIN PLAN의 경우 같은 플랜을 얻으려면 똑같은 환경을 조성해 주어야 한다.
2) V$SQL_PLAN_STATISTICS : 출력 로우수,경과시간과 같은 통계자료를 제공한다. 출력 로우수를 제외한 모든 통계값은 누적값이다.
이 뷰의 데이터를 참조하기 위해서는 초기화 파라미터인 STATISTICS_LEVEL 이 ALL로 설정되어 있어야 한다.
3) V$SQL_PLAN_STATISTICS_ALL : 출력 로우수나 경과시간과 같은 통계자료를 하나씩 비교하는데 편리하다. V$SQL_PLAN과 V$SQL_PLAN_STATISTICS를 합쳐놓은 것이다.
6. 아래는 http://www.oracleclub.com/lecture/1540 에서 가져 온 것.
4.5.6. OPERATION and OPTIONS Values Produced by EXPLAIN PLAN
4.5.5. PLAN_TABLE Columns
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

