BackEnd/DataBase
[ DB / SQL튜닝 ] 실행계획
jimin-log
2023. 8. 13. 22:17
실행계획이란?
데이터 처리절차이다. SQL이 갖는 성능상 문제점을 찾기 위해서 사용한다.
확인 후 분석하여 튜닝이 가능하다. 인덱스 설계상 문제, 테이블 설계상 문제는 실행계획에서 찾아낼 수 없다.
01. 실행계획 확인 방법 - 오라클
- EXPLAIN PLAN
- SET AUTOTRACE
1-1. EXPLAIN PLAN
- SQL 실행 계획만 확인 가능하고 데이터 처리는 하지 않는다.
- 데이터베이스 부화가 되지 않는다.
EXPLAIN PLAN
SET STATEMET_ID = 'TEST1' INTO PLAN_TABLE
FOR
SELECT /*+USE_NL(e,d)*/
e.ename, e.deptno, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;
- 저장 결과를 확인하기 위해서 별도의 셀렉트 문이 필요하다.
- 데이타를 읽지 않기때문에 소요시간 및 IO관련 정보를 알수 없다.
SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY ('PLAN_TABLE','TEST1','ALL'));
1-2. SET AUTOTRACE
- 한번의 명령으로 여러개의 SQL에 대한 실행계획을 바로 알 수 있다.
- 다양하게 옵션을 사용할수 있어서 여러가지 정보를 선택적으로 확인 할 수 있다.
SET AUTOTRACE ON;
SELECT /*+USE_NL(e d)*/
e.ename,dept d
FROM emp e, dept d
WHERE e.deptno = d.deptno;
옵션
※ 원하는 결과만 출력하기 위해 ON
SET AUTOTARCE ON EXPLAIN;
출력결과 => 실행계획 (IO출력 생략)
SET AUTOTARCE ON STATISTICS;
출력결과 => IO관련 정보 (실행계획 생략)
SET AUTOTARCE TRACEONLY;
셀렉트 동작시 출력 된 결과물을 화면에 다 노출하지 않음 , 건수 실행 결과 IO 결과
SET AUTOTARCE TRACEONLY EXPLAIN;
데이터를 처리 하지 않고 실행계획만 제공 (큰 데이터 처리 시 사용)
SET AUTOTARCE TRACEONLY STATISTICS;
데이터를 처리 하지 않고 IO관련 정보만 제공
SET AUTOTRACE OFF;
AUTOTRACE 정보를 확인 하지 않기.
02. 실행계획 분석
들여쓰기 뎁스가 서로 같은 경우 상단이 먼저 하단이 이후에 작업
분석 순서 : 3 => 4 => 2 => 1 => 0