개요
AUTOTRACE는 쿼리 실행 시 실행 계획(Execution Plan)과 SQL 수행 통계(Statistics)를 자동으로 수집하여 결과를 제공하는 기능으로, 쿼리 수행 시 실행 계획과 SQL 수행 통계를 자동으로 수집하여 확인할 수 있으며, 쿼리 튜닝 및 성능 진단 시 유용하게 활용 가능합니다.
방법
관련 파라미터
파라미터명 | 설명 |
gather_sql_plan_stat | SQL 수행 시 실행 계획(Plan)과 관련 통계 정보를 수집 여부 설정
Y: 수집, N: 미수집 |
관련 veiw 정보
파라미터명 | 설명 |
v$sql_plan | SQL 문장의 실행 계획 정보 |
v$sysstat | 시스템 통계 |
v$sql_plan_statistics | SQL 문장의 수행 통계 정보 |
[v$sql_plan]
SQL> desc v$sql_plan
COLUMN_NAME TYPE CONSTRAINT
----------------------- ----------------- ---------------
HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
SQL_ID VARCHAR(13)
CHILD_NUMBER NUMBER
OPERATION VARCHAR(128)
OBJECT# NUMBER
OBJECT_OWNER VARCHAR(128)
OBJECT_NAME VARCHAR(128)
OBJECT_TYPE VARCHAR(20)
ID NUMBER
PARENT_ID NUMBER
DEPTH NUMBER
POSITION NUMBER
SEARCH_COLUMNS NUMBER
COST NUMBER
CPU_COST NUMBER
IO_COST NUMBER
CARDINALITY NUMBER
PSTART VARCHAR(38)
PEND VARCHAR(38)
OTHERS VARCHAR(65532)
ACCESS_PREDICATES VARCHAR(65532)
FILTER_PREDICATES VARCHAR(65532)
LPN VARCHAR(128)
ADVISED_COLNO VARCHAR(4000)
SQL
복사
[v$sysstat]
SQL> desc v$sysstat
COLUMN_NAME TYPE CONSTRAINT
----------------------- ----------------- ---------------
STAT# NUMBER
NAME VARCHAR(60)
CLASS NUMBER
VALUE NUMBER
SQL
복사
[v$sql_plan_statistics]
SQL> desc v$sql_plan_statistics
COLUMN_NAME TYPE CONSTRAINT
----------------------- ----------------- ---------------
HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
SQL_ID VARCHAR(13)
CHILD_NUMBER NUMBER
ID NUMBER
EXECUTIONS NUMBER
LAST_STARTS NUMBER
STARTS NUMBER
LAST_OUTPUT_ROWS NUMBER
OUTPUT_ROWS NUMBER
LAST_LEFT_INPUT_ROWS NUMBER
LEFT_INPUT_ROWS NUMBER
LAST_RIGHT_INPUT_ROWS NUMBER
RIGHT_INPUT_ROWS NUMBER
LAST_CR_BUFFER_GETS NUMBER
CR_BUFFER_GETS NUMBER
LAST_ELAPSED_TIME NUMBER
ELAPSED_TIME NUMBER
LAST_MEM_USAGE NUMBER
MEM_USAGE NUMBER
LAST_TEMP_SEGMENT_READ_CNT NUMBER
TEMP_SEGMENT_READ_CNT NUMBER
LAST_TEMP_SEGMENT_WRITE_CNT NUMBER
TEMP_SEGMENT_WRITE_CNT NUMBER
LAST_CU_BUFFER_GETS NUMBER
CU_BUFFER_GETS NUMBER
LAST_DISK_READS NUMBER
DISK_READS NUMBER
SQL
복사
AUTOTRACE 사용 절차
실행 계획 수집 파라미터 설정 후 쿼리를 수행합니다.
1.
서버 인코딩 설정 (DB의 인코딩이 UTF8 일 시)
$ export LANG=ko_KR.utf8
$ echo $LANG
ko_KR.utf8
SQL
복사
2.
TBSQL 접속 및 AUTOTRACE 설정
결과는 autotrace.txt 파일로 저장됩니다.
•
AUTOTRACE 활성화 : set autot on exp stat plans
•
실행 계획 수집 설정 : alter session set gather_sql_plan_stat=y
$ tbsql sys/tibero
SQL> spool autotrace.txt
SQL> alter session set gather_sql_plan_stat=y;
SQL> set rows off
SQL> set autot on exp stat plans
SQL> set timing on
SQL> set lines 250
SQL> @query.sql
SQL> alter session set gather_sql_plan_stat=n;
SQL> spool off
SQL
복사
3.
AUTOTRACE 결과 확인 항목
3.1. 쿼리 수행 시간 , SQL_ID, Child number, Plan hash value
3.2. 실행 계획 (Execution Plan)
Cost | V$SQL_PLAN의 COST 컬럼 값으로 하위 플랜 노드의 초 누적된 COST 값 |
%%CPU | Cost에서 CPU Cost가 차지하는 비율 |
Rows | Optimizer에서 예측한 플랜 노드 수행 결과 Row 수 |
3.3. Predicate Information
•
access : Join predicate, Index access predicate
•
filter : filter predicate
3.4. Execution Stat (수행 통계)
[SQL 수행정보]
Time (ms) | 플랜 노드 수행 시간 |
Rows | 플랜 노드 수행 후 결과 Row 수 |
Starts | 플랜 노드가 전체 SQL를 수행하며 반복 수행된 횟수 |