1차시) [SQL 성능 분석하기] 실행계획
EXPLAIN PLAN
- SQL에 대한 실행계획만 확인
- 데이터를 처리하지 않음.
- 따라서 데이터베이스의 부하 X
튜닝 시 END 유저는 어떤 부하도 느껴선 안된다.
STATEMENT_ID가 TEST1 으로 저장되며 실행 계획이 TEST1이란 이름으로 PLAN_TABLE에 저장됨
그래서 PLAN_TABLE을 조회하는 쿼리를 날려야됨.
->
SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', 'TEST1', 'ALL'));
데이터를 처리하지 않으므로 경과 시간 등 및 SORTING, IO관련 정보는 확인할 수 없음.
SET AUTOTRACE
SET AUTOTRACE ON; 처리 후 여러개의 SQL에 대한 실행계획을 바로 볼 수 있음.
데이터가 아주 큰 경우 EXPLAIN PLAN.(데이터를 읽지 않아야 함)
작은 데이터이면서 IO등의 데이터 처리 내용을 봐야한다면 SET AUTOTRACE.
SET AUTOTRACE 옵션
SET AUTOTRACE ON EXPLAIN;
-- 데이터처리 X. 실행계획 출력(통계정보 생략)
SET AUTOTRACE ON STATISTICS;
-- 출력 결과. 실행계획 생략, IO관련 정보 출력
SET AUTOTRACE TRACEONLY;
-- 출력 결과가 많을 시 사용.
-- 건수만 출력.
+ EXPLAIN, STATISTICS 옵션 추가 사용 가능.
-- EXPLAIN : 데이터 처리 X 실행계획만 추출.
-- STATISTICS : IO관련 정보만 표출(= 데이터 처리했다는 것). 실행계획 X.
완료 후
SET AUTOTRACE OFF;
가장 잘 활용 :
SET AUTOTRACE TRACEONLY EXPLAIN;
-- 데이터를 읽지 않아 부하가 없으며 실행계획만을 확인할 수 있기 때문.
실행계획 이유/ 실행계획 해석
SQL이 갖는 성능상의 이슈를 밝혀내기 위한 작업임.
성능부하에 이슈가 있다면 가장 먼저 실행계획을 확인하라.
실행계획의 ID | Operation 에서의
ID 기준 들여쓰기 기준으로 묶음처리.DEPTH로 묶임.
ID 기준으로 순서대로 실행되는 것임.
실행계획 Tree 구조로 그리기
실행순서에 따라 왼쪽부터 그림을 그림
-- 가장 아래의 가장 왼쪽이 제일 먼저 실행됨.
= 3번부터 실행
정리
SQL이 동작할 시 OPTIMAZER가 SQL을 해석 > 실행계획(데이터 처리 절차)을 수립함
실행계획이 성능을 좌우함.
-> SET AUTOTRACE, EXPLAIN PLAN
인덱스 설계상 문제, 테이블 설계상 문제는 확인할 수 없음.
'DB > SQL튜닝' 카테고리의 다른 글
업무에 바로 쓰는 SQL튜닝 입문 - 4교시(결합인덱스) (0) | 2022.09.25 |
---|---|
업무에 바로 쓰는 SQL튜닝 입문 - 3교시(인덱스) - 1 (0) | 2022.09.25 |
업무에 바로 쓰는 SQL튜닝 입문 - 3교시(인덱스) (0) | 2022.09.25 |
업무에 바로 쓰는 SQL튜닝 입문 - 2교시(옵티마이저) - 2 (0) | 2022.09.25 |
업무에 바로 쓰는 SQL튜닝 입문 - 2교시(옵티마이저) (0) | 2022.09.25 |