SQL Explain Plan
SQL 실행 계획은 Query Optimizer에서 여러 Candidate Plan 중 가장 좋은 Plan으로 선택된 Plan을 실제 수행을 위한 형태로 구성된 것을 말한다. SQL 실행 계획은 실행을 위한 Node 단위로 구분이 되며, 각 Node는 자신이 수행해야 하는 Filter 등을 갖는다.
\explain plan : 실행결과 및 실행계획 출력
gSQL> \explain plan SELECT id, name FROM t1 ORDER BY 1;
|
\explain plan only : 실행 계획만 출력
gSQL> \explain plan only SELECT id, name FROM t1 ORDER BY 1;
|
\explain plan verbose : 실행결과에 따른 소요시간 출력
gSQL> \explain plan verbose SELECT id, name FROM t1 ORDER BY 1;
ID NAME -- ---------- 1 leekmo 2 jhkim 3 bsyou 3 rows selected. >>> start print plan < Execution Plan > ====================================================================================================== | IDX | NODE DESCRIPTION | ROWS | Total Time | ------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 0:00:00.000009 | | 1 | TABLE ACCESS ("T1") | 9 | 0:00:00.000008 | ====================================================================================================== 1 - READ COLUMNS : ID, NAME <<< end print plan |
SQL Trace Log
SQL Trace Log는 사용자의 질의 수행에 대한 분석 가능한 정보를 기록하는 Log이다. SQL Trace Log는 $SUNDB_DATA/trc 디렉토리에 생성되며, 프로세스 ID 와 세션 ID로 구분되어 각각 독립된 파일로 생성된다. SQLTrace Log는 사용자의 질의, SQL 실행 계획, SQL 처리 과정별 수행시간 등 여러 정보로 구성되어 파일에 출력된다.
SQL Trace Log 출력 (Trace Log 옵션은 SYSDBA 계정에서 설정)
gSQL> \CONNECT AS SYSDBA # trace log 출력 gSQL> ALTER SYSTEM SET TRACE_LOG_ID = 70200; System altered. # trace log 시간을 상세하게 gSQL> ALTER SYSTEM SET TRACE_LOG_TIME_DETAIL = ON; System altered. |
SQL Trace Log 해제
# trace log 해제 gSQL> ALTER SYSTEM SET TRACE_LOG_ID = 0; System altered. # trace log 시간 해제 gSQL> ALTER SYSTEM SET TRACE_LOG_TIME_DETAIL = OFF; System altered. |
SQL Trace Log는 trc 디렉토리 아래 파일이 생기며 파일명에 대한 규칙은 아래와 같다.
opt_p[프로세스ID]_s[세션ID].trc |
SQL Trace Log 확인
[neuron@song ~]$ cd $SUNDB_DATA/trc [neuron@song trc]$ ls -la 합계 48 drwxrwxr-x. 2 neuron neuron 4096 2015-03-20 17:43 . drwxrwxr-x. 8 neuron neuron 4096 2015-03-19 13:04 .. -rw-r--r--. 1 neuron neuron 15 2015-03-19 00:41 README -rw-rw-r--. 1 neuron neuron 5045 2015-03-20 17:44 opt_p23232_s27.trc -rw-rw-r--. 1 neuron neuron 24876 2015-03-20 17:24 system.trc [neuron@song trc]$ [neuron@song trc]$ |
< SQL Query String > ---------------------- select empno, ename from semp < Execution Plan > ====================================================================================================== | IDX | NODE DESCRIPTION | ROWS | Total Time | ------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 0:00:00.000009 | | 1 | TABLE ACCESS ("SEMP") | 9 | 0:00:00.000008 | ====================================================================================================== 1 - READ COLUMNS : EMPNO, ENAME < Result > ---------------------- SUCCESS < Execution Type > ---------------------- DIRECT EXECUTE < Bind Param Value > -------------------------- No Bind Param. < Time Info > ==================================================== | Module | Time | Rate | Call | ---------------------------------------------------- | Parse | 0:00:00.000021 | 14.89 % | 1 | | Validate | 0:00:00.000038 | 26.95 % | 1 | | Code Opt | 0:00:00.000018 | 12.77 % | 1 | | Optimizer | 0:00:00.000043 | 30.50 % | 1 | | Data Opt | 0:00:00.000007 | 4.96 % | 1 | | Execute | 0:00:00.000004 | 2.84 % | 1 | | Fetch | 0:00:00.000010 | 7.09 % | 1 | | Total | 0:00:00.000141 | 100.00 % | | ==================================================== |