< Trace >
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 0 0 0
Fetch 2 0.36 10.84 1808 1869 0 929
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.36 10.84 1808 1869 0 929
Rows Row Source Operation
------- ---------------------------------------------------
929 SORT ORDER BY
929 HASH JOIN OUTER
929 TABLE ACCESS BY INDEX ROWID TAB1
929 INDEX RANGE SCAN TAB1_PK (object id 30082)
929 TABLE ACCESS BY INDEX ROWID TAB2
929 INDEX RANGE SCAN TAB2_PK (object id 30193)
위는 1:1관계에 있는 두 테이블 ( TAB1, TAB2 )을 Hash Join 한 SQL의 Trace 결과입니다
문제가 되는 것은 DISK I/O 부분입니다
과거 기간을 조회하는 해당 SQL의 특성상 조회하고자 하는 데이터는
버퍼 캐쉬에 없을 가능성이 높습니다.
물론, SQL을 재실행하여 메모리 I/O만 하게 되면 1초도 안걸리고 실행됩니다.
사용자가 거의 없어 부하가 없는 상태에서 테스트 했는데..
DISK I/O 1800 블록에 10초 정도면 문제가 있는 거 아닌가요?
( 평상시는 약 DISK I/O 100블록에 1초 정도 )
하드웨어는 SunFire880(CPU 4, MEM 8G), EMC CX500 입니다..
시스템이나 스토리지 쪽에서는 iostat 등으로 성능측정을 해본 결과
I/O 성능에는 문제가 없으며, 오라클이나 Application의 문제라고 합니다..ㅜ.ㅜ
뭔가 조치가 필요한것 같은데 방향을 못잡겠네요...
도움 부탁드립니다..
|