- Auto Trace
SQL 수행 시에 실제 일량 측정 및 튜닝하는데 유용한 정보들을 많이 포함하는 도구
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | set autotrace on SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled SP2-0611: Error enabling STATISTICS report // -- 사용자 계정으로 위와같이 하면 PLUSTRACE 사용 설정을 확인해주어야 한다. SQL> grant plustrace to pasudo; Grant succeeded. SQL> conn pasudo/pasudopass Connected. SQL> set autot on SQL> select * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -------------------- ------------------ ---------- -------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 18/02/18 800 20 7499 ALLEN SALESMAN 7698 18/02/18 1600 300 30 7521 WARD SALESMAN 7698 18/02/18 1250 500 30 7566 JONES MANAGER 7839 18/02/18 2975 20 7654 MARTIN SALESMAN 7698 18/02/18 1250 1400 30 7698 BLAKE MANAGER 7839 18/02/18 2850 30 7782 CLARK MANAGER 7839 18/02/18 2450 10 7788 SCOTT ANALYST 7566 18/02/18 3000 20 7839 KING PRESIDENT 18/02/18 5000 10 7844 TURNER SALESMAN 7698 18/02/18 1500 0 30 7876 ADAMS CLERK 7788 18/02/18 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -------------------- ------------------ ---------- -------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 18/02/18 950 30 7902 FORD ANALYST 7566 18/02/18 3000 20 7934 MILLER CLERK 7782 18/02/18 1300 10 14 rows selected. Execution Plan ---------------------------------------------------------- Plan hash value: 3956160932 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 1218 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| EMP | 14 | 1218 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------- Note ----- - dynamic sampling used for this statement (level=2) Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 4 consistent gets 0 physical reads 0 redo size 1630 bytes sent via SQL*Net to client 523 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 14 rows processed | cs |
Auto Trace 옵션
아래와 같은 옵션에 따라 필요한 부분만 출력해 볼 수 있다.
1 2 | SQL> set autotrace Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] | cs |
위의 내용을 살펴보면
set autotrace on
set autotrace on explain [exp]
set autotrace on statistics [stat]
set autotrace traceonly
set autotrace trace exp
set autotrace trace stat
1번, 2번, 3번은 수행결과를 출력해주어야 하기 때문에 쿼리를 실제 수행한다.
4번, 6번은 실행 통계를 보여주어야 하기 때문에 쿼리를 실제 수행한다.
5번은 실행계획만 출력하면 되므로 실제 수행을 하지 않는다.
내용 이해하기
- Explain
Cost
CBO(Cost-Based Optimizer) 가 쿼리 계획의 각 단계에 할당한 비용을 의미. CBO는 동일한 쿼리에 대해서 다양한 실행경로 및 계획을 생성함으로써 모든 쿼리에 대해 비용을 할당한다.
Rows
해당 쿼리 계획 단계에서 나올 것으로 예상되는 행의 수
Byte
계획의 각 단계가 반환할 것으로 예상되는 데이터의 크기를 바이트로 나타낸 수
Time
각 단계별 수행 시간
- Statistics
recursive calls
사용자의 SQL문을 실행하기 위하여 읽어온 블럭의 수
db block gets
현재 모드(current mode)에서 버퍼 캐시로부터 읽어온 블록의 총 수
consistent gets
버퍼 캐시의 블록에 대한 일관된 읽기의 요청 횟수. 일관된 읽기는 언두 정보, 즉 롤백 정보에 대한 읽기를 요구할 수도 있으며 언두에 대한 읽기도 계산
physical reads
물리적으로 데이터 파일을 읽어 버퍼 캐시에 넣은 횟수 (디스크에서 읽은 수)
redo size
해당 문이 실행되는 동안 생성된 리두의 전체 크기를 바이트 단위로 나타낸 수
bytes sent via SQL*Net to client
서버로부터 클라이언트에 전송된 총 바이트 수
bytes received via SQL*Net from client
클라이언트로부터 받은 총 바이트 수
SQL*Net roundtrips to/from client
클라이언트에서 전송된 SQL*NET 메시지의 총 수, 다중 행 결과 집합으로부터 꺼내오기 위한 왕복을 포함
sorts (memory)
사용자의 세션 메모리(정렬 영역)에서 수행된 정렬 sort_area_size 데이터베이스 맥변수에 의해 제어
sorts (disk)
사용자의 정렬 영역의 크기를 초과하여 디스크(임시 테이블 영역)을 사용하는 정렬
rows processed
수정되거나 select 문으로부터 반환된 행 (조건에 만족하는 로우 수)
'데이터베이스 > 데이터베이스 명령어' 카테고리의 다른 글
20180423 [ORACLE] Sequece 개념 및 생성 (0) | 2018.04.23 |
---|---|
20180220 [ORACLE] 사용자 권한 (0) | 2018.02.20 |
20180220 [ORACLE] TABLESPACE 관련 명령어 (0) | 2018.02.20 |