개요
SQL_TRACE는 SQL 실행 시 추적 정보를 기록하여 실행 통계 정보 확인이 가능한 기능입니다.
이 기능을 사용하여 SQL 실행 시 추적 정보를 기록하고 그 결과를 확인하는 방법에 대해 설명합니다.
방법
주의
인스턴스 레벨로 Trace 활성화할 경우, 전체 시스템 성능 저하 가능성이 있습니다.
세션 레벨로 trace 실행을 권고합니다.
관련 파라미터
파라미터명 | 설명 |
SQL_TRACE | SQL 추적 기능 활성화 여부 (Y: 활성화, N: 비활성화) |
SQL_TRACE 사용 절차
1.
세션의 파라미터 값 변경 후 (SQL_TRACE=Y) 쿼리 수행
$ tbsql sys/tibero
SQL> set timing on;
SQL> set lines 250;
SQL> set rows off;
-- SQL_TRACE 활성화
SQL> alter session set sql_trace = y;
-- 쿼리 수행
SQL> @query.sql
-- SQL_TRACE 비활성화
SQL> alter session set sql_trace = n;
SQL
복사
2.
~.trc 파일을 out 파일로 변환
수행된 쿼리의 Trace 파일(.trc)이 $TB_HOME/instance/$TB_SID/sqltrace 디렉토리에 생성됩니다.
-. Trace 파일 위치 이동
$ cd $TB_HOME/instance/$TB_SID/sqltrace
-. Trace 파일을 읽기 쉬운 Out 파일로 변환
$ tbprof tb_sqltrc_13795_186_2104490.trc sqltrace.out
SQL
복사
3.
sqltrace.out 결과 분석
•
parse : SQL문 파싱에 걸린 시간/자원 사용량
•
exec : SQL 실행 중 디스크 읽기, 블록 접근, 처리된 로우 수
•
fetch : 데이터 패치 시 소모된 리소스
[주요 통계 항목]
항목 | 설명 |
parse | SQL문이 파싱(구문 분석)되는 단계에 대한 통계 |
exec | SQL문의 실행 단계에 대한 통계 (DML : Update, Insert, Delete) |
fetch | SQL문이 실행되면서 데이터 패치(Fetch) 된 통계 |
count | SQL문이 파싱/실행/패치가 수행된 횟수 |
cpu | 실제 CPU 사용 시간 |
elapsed | 작업 시작부터 종료까지 실제 소요 시간 |
current | 해당 세션에서 작업 내역을 커밋하지 않아 자신에게만 유효한 블럭을 액세스한 블럭 수 (Update, Insertm Delete 등 변경 작업 시 증가) |
query | Select 등 읽기 작업에서 읽은 Consistent Read 블록 수
(메모리 내 변경되지 않은 블럭을 읽거나 다른 세션에 의해 변경되었으나 아직 커밋하지 않아 복사해둔 스냅샷 블럭을 읽은 블럭 수) |
disk | 디스크에서 읽어온 블록 수 |
rows | SQL 실행 결과 처리된 최종 행(Row) 수 |
[실행 정보 확인]