1일차

실행계획

  • 설계서 확인이 안됨

  • SQL 한해서

실행계획 확인

  • 데이터 처리 과정은 하지 않음 -> 실행계획만 확인 함

옵션

  • BASIC

  • TYPICAL

  • ALL

  • SERIAL

  • ADVANCED

SET AUTOTRACE ON

Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
         25  consistent gets
          0  physical reads
          0  redo size
        819  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
         14  rows processed

  • sql -> 자동으로 출력 실행계획

  • physical reads :

  • consistent gets : 버퍼에 올라온 내용 IO

  • db block gets:

  • show parameter sort_area_size -> 버퍼

SET AUTOTRACE ON EXPLAIN

SET AUTOTRACE ON STATISTICS

SET AUTOTRACE TRACEONLY

  • 구문 output 생략

SET AUTOTRACE TRACEONLY EXPLAIN

실행계획 분석

> set autotrace explain;

# 일반sql
select empno, ename, job
from emp
where empno between 7654 and 7788;

# 힌트 사용 (인덱스 디센딩)
select /*+ INDEX_DESC(EMP PK_EMP) */empno, ename, job
from emp
where empno between 7654 and 7788;

# 인덱스 풀스캔
select /*+ INDEX(EMP PK_EMP)*/ EMPNO, ENAME
from emp;

# 인덱스 패스트 풀스캔
select /*+ INDEX_FFS(EMP PK_EMP)*/ EMPNO
from emp;

index full scan vs index fast full scan

  • io 블록 처리 : 1개 vs 여러개

  • show parameter db_block_size;

  • show parameter db_file_multiblock_read_count; -> (ffs의 장점)

각 i/o 에서 발생 -> show parameter sort_area_size;

order by -> 소팅 인덱스로 해결 할 수 있는부분 (실행계획이 달라짐)

옵티마이저

  • show parameter optimizer_mode;

  • alter session set optimizer_mode = RULE; (RBS-룰베이스, 여러건)

  • alter session set optimizer_mode = FIRST_ROWS; (CBS-코스트베이, 한)

랭크룰

  • 1~15

  • 8 : 결합 칼럼

  • 9 단일 컬럼

analyze table EC_PROGRESS COMPUTE STATISTICS 2 FOR ALL COLUMNS 3 FOR ALL INDEXES;

Last updated