tkprof
trace 파일의 경우 사용자가 보기 좋게 포멧팅 되어 있지 않아 trace 분석을 위한 툴
분석 방법
TKPROF: Release 19.0.0.0.0 - Development on Mon Oct 21 12:50:27 2024
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Trace file: EMSDB_ora_1860860.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
********************************************************************************
<..main sql 생략>
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 18 0 0
Fetch 2 1.26 1.67 0 511939 0 2
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 1.27 1.68 0 511957 0 2
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 86
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------
2 2 2 NESTED LOOPS (cr=511939 pr=0 pw=0 time=286653 us starts=1 cost=30 size=4401810 card=274)
972458 972458 972458 NESTED LOOPS (cr=118 pr=0 pw=0 time=379867 us starts=1 cost=30 size=4401810 card=8588034)
51182 51182 51182 TABLE ACCESS FULL CMM_RESOURCE_MAINTENANCE (cr=108 pr=0 pw=0 time=6608 us starts=1 cost=30 size=1226862 card=47187)
972458 972458 972458 INDEX RANGE SCAN IDX_RESOURCE_PARENT (cr=10 pr=0 pw=0 time=250512 us starts=51182 cost=0 size=0 card=182)(object id 24417)
2 2 2 TABLE ACCESS BY INDEX ROWID CMM_RESOURCE (cr=511821 pr=0 pw=0 time=1035019 us starts=972458 cost=0 size=16039 card=1)
********************************************************************************
로우/컬럼 | 설 명 |
Parse | SQL문이 파싱되는 단계에 대한 통계. 새로 파싱을 했거나 Shared SQL Pool에서 찾아 온 것도 같이 포함 된다. |
Execute | SQL문의 실행 단계에 대한 통계. Update, Insert, Delete 문장들은 여기에 수행한 결과만 나온다. |
Fetch | SQL문이 실행되면서 페치된 통계 |
count | SQL문이 파싱/실행/페치가 수행된 횟수 |
cpu | parse, execute, fetch가 실제로 사용한 CPU시간 |
elapsed | 작업의 시작에서 종료시까지 실제 소요된 시간 |
disk | 디스크에서 읽혀진 데이터 블럭의 수 |
query | 메모리내에서 변경되지 않은 블럭을 읽거나 다른 세션에 의해 변경되었으나 아직 커밋되지 않아 복사해 둔 스냅샷 블럭을 읽은 블럭 수. SELECT문에서는 대부분 여기에 해당하며 Update, Insert, Delete 작업시에는 소량만 발생 합니다. |
current | 현 세선에서 작업한 내용을 커밋하지 않아 오로지 자신에게만 유효한 블럭(Dirty Block)을 액세스한 블럭 수. 주로 Update, Insert, Delete 작업시 많이 발생 한다 |
rows | SQL문을 수행한 결과에 의해 최종적으로 액세스된 로우의 수 |
결론
위 내용을 바탕으로 현재 수행된 main 쿼리의 경우 2개의 결과 행을 반환하는데 511939번 데이터를 읽어들여
상당히 비효율적인 것을 확인 할 수 있다
'DB > Oracle' 카테고리의 다른 글
[Tuning] Cost 관련 내용 (0) | 2024.11.15 |
---|---|
[Admin] SQL 플랜이 변경된 이유 확인 (0) | 2024.11.15 |
[Tuning] SQL Plan 해석 (0) | 2024.09.23 |
[Tuning] Index Invisible (0) | 2024.09.20 |
[ADMIN] Oracle CTF VS TAF (0) | 2024.09.20 |