* 문제점
> 사용자가 많지 않은데 오라클+톰캣이 느린경우. 특별한 쿼리나 스크립트가 돌지 않은 상황이다.
* 힌트
> i/o 사용량을 확인하는 쿼리로 확인 결과 엄청난(?) 양의 쿼리가 필요없이 DB에서 돌고 있다.
> 쿼리
select xx.*
from
(select
a.ACTION action_a
,a.ACTION_HASH action_hash_a
,a.ADDRESS
,a.BUFFER_GETS
,a.CHILD_LATCH
,a.COMMAND_TYPE
,a.CPU_TIME
,a.DISK_READS
,a.ELAPSED_TIME
,a.EXECUTIONS
,a.FETCHES
,a.FIRST_LOAD_TIME
,a.HASH_VALUE
,a.INVALIDATIONS
,a.IS_OBSOLETE
,a.KEPT_VERSIONS
,a.LOADED_VERSIONS
,a.LOADS
,a.MODULE MODULE_a
,a.MODULE_HASH MODULE_HASH_a
,a.OPEN_VERSIONS
,a.OPTIMIZER_MODE
,a.PARSE_CALLS
,a.PARSING_SCHEMA_ID
,a.PARSING_USER_ID
,a.PERSISTENT_MEM
,a.ROWS_PROCESSED
,a.RUNTIME_MEM
,a.SERIALIZABLE_ABORTS
,a.SHARABLE_MEM
,a.SORTS
,a.SQL_TEXT
,a.USERS_EXECUTING
,a.USERS_OPENING
,a.VERSION_COUNT
,b.ACTION
,b.ACTION_HASH
,b.AUDSID
,b.CLIENT_IDENTIFIER
,b.CLIENT_INFO
,b.COMMAND
,b.CURRENT_QUEUE_DURATION
,b.FAILED_OVER
,b.FAILOVER_METHOD
,b.FAILOVER_TYPE
,b.FIXED_TABLE_SEQUENCE
,b.LAST_CALL_ET
,b.LOCKWAIT
,b.LOGON_TIME
,b.MACHINE
,b.MODULE
,b.MODULE_HASH
,b.OSUSER
,b.OWNERID
,b.PADDR
,b.PDDL_STATUS
,b.PDML_ENABLED
,b.PDML_STATUS
,b.PQ_STATUS
,b.PREV_HASH_VALUE
,b.PREV_SQL_ADDR
,b.PROCESS
,b.PROGRAM
,b.RESOURCE_CONSUMER_GROUP
,b.ROW_WAIT_BLOCK#
,b.ROW_WAIT_FILE#
,b.ROW_WAIT_OBJ#
,b.ROW_WAIT_ROW#
,b.SADDR
,b.SCHEMA#
,b.SCHEMANAME
,b.SERIAL#
,b.SERVER
,b.SID
,b.SQL_ADDRESS
,b.SQL_HASH_VALUE
,b.STATUS
,b.TADDR
,b.TERMINAL
,b.TYPE
,b.USER#
,b.USERNAME
from v$sqlarea A,
v$session B
where A.disk_reads > 10000
and A.ADDRESS = B.SQL_ADDRESS(+)
AND A.HASH_VALUE = B. SQL_HASH_VALUE(+)
order by A.disk_reads desc) xx
where rownum < 30
* 해결방법
> 모든 jsp 에서 참조하고 있는 의미없는 쿼리를 로그인 시 1회 로드하여 세션에 저장하도록 변경
* 현재 값과 튜닝 후 예상 값(결과)
>
댓글 없음:
댓글 쓰기