7._Response_Time_Analysis_방법론과_OWI
2012.04.01 19:07
- Response Time Analysis 성능관리 방법론
- 대기 이벤트를 기반으로 세션 또는 시스템 전체에 발생하는 병목 현상과 그 원인을 찾아 문제를 해결하는 방법(과정)
- 1999년 6월 Yet Another Performance Profiling Method(YAPP-Method) 오라클 기술백서 발표로 주목
Response Time = Service Time + wait Time = CPU time + Queue Time
- Service Time : 프로세스가 정상적으로 동작하며 일을 수행한 시간 (CPU time)
- Wait Time : 대기이벤트가 발생해 작업수행을 잠시 멈추고 대기한 시간 (Queue Time)
- OWI (Oracle Wait Interface)
- Response Time Analysis 방법론을 지원하려고 오라클이 제공하는 기능과 인터페이스를 통칭하는 말
- 성능분석 방법론
- 모든 성능 분석 방법론은 위의 과정을 반복 하면서 문제를 해결해 나간다.
- Response Time Analysis 방법론은 성능문제 진단 및 해결시 사용하는 방법이 wait event 기반 진단 및 해결 방법을 모색한다.
- 즉 문제 인식 시점에서의 top wait event 를 추출해 내고 추출된 wait event에 해당 하는 튜닝을 진행하여 문제를 해결하고 이러한 과정을 반복하여 시스템의 성능을 향상시키는 과정이다.
참고) 성능분석 방법론에 대한 비교 (Oracle 성능분석 방법론 참조)
| More Resource | Ratio-Base Analysis | Wait Event Analysis | Session Level Profiling Analysis | Oracle Response Time Analysis |
성능 문제의 정의 | 관리자의 느낌이나 사용자의 불평 발생 | Resource의 과다사용 | Wait 의 과다 발생 | 응답시간 중 대기 시간이 과다한 상항 | User Irritation이 75%이상 |
성능 분석의 도구 | 없음 | v$sesstat v$sysstat | v$system_event v$session-event v$session_wait | v$session v$session-event v$session_wait | v$system_event v$session_event v$session_wait CPU 개수 v$sesstat v$sysstat |
성능 문제의 인식 | 관리자의 느낌 사용자의 불평 | Script를 수행 (다소모호) | Top Wait Event | 세션별 wait time및 service time을 구함 | User Irritation을 구함 |
성능 문제의 진단 | 없음 | Script의 결과로 이상지점을 판단 이상지점에 지정된 원인이 준비되어 있음 | Top Wait Event를 병목지점으로 판단 해당 Wait Event로 원인 분석 | 대기를 많이 한 Wait Event 그룹으로 병목 판단 | Top wait 중심으로 산출한 Wait 그룹으로 병목을 판단하고 해당 Wait event로 원인 분석 |
성능 문제의 해결 | More Resource 및 제한적 SQL 튜닝 | Ratio 범위 안에서 동작하도록 해결책 정의 | 문제의 event에 맞게 SQL 튜닝 Parameter 튜닝등 | 병목 판단 wait event에 맞는 SQL 튜닝 | 문제의 Event에 맞게 SQL 튜닝 Parameter튜닝등 |
방법론 장점 |
| 절대량을 상대량으로 표시하여 비교 가능 | 병목 판단하기 좋음 | 튜닝 대상을 찾기에 좋음 | 하나의 수치로 성능을 평가 |
방법론 약점 |
| 정확한 원인의 파악이 어려움 | 진단의 오류 가능성 | 세션만을 대상으로 하므로 전체적인 성능 관리에 한계 | Top wait를 사용함으로써 진단의 오류 가능성이 상존 |
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
46 | 7._Result_캐시 | 운영자 | 2012.05.27 | 4157 |
45 | 2._Memory_vs._Disk_IO | 정찬호 | 2012.05.23 | 4167 |
44 | 10._Dynamic_SQL_사용_기준 | 남송휘 | 2012.05.07 | 4276 |
43 | 5._바인드_변수의_중요성 | 시와처 | 2012.04.23 | 4299 |
42 | 1._Call_통계 | 정찬호 | 2012.05.07 | 4310 |
41 | 5장._데이터베이스_Call_최소화_원리 | 운영자 | 2012.05.07 | 4321 |
40 | 1._Explain_Plan | 남송휘 | 2012.03.26 | 4330 |
39 | 2._User_Call_vs._Recursive_Call | 정찬호 | 2012.05.07 | 4427 |
38 | 12._데이터베이스_성능_고도화_정석_해법 | 남송휘 | 2012.04.09 | 4574 |
37 | 5._V$SYSSTAT | AskZZang | 2012.04.04 | 4599 |
36 | 6._바인드_변수의_부작용과_해법 | 시와처 | 2012.04.23 | 4645 |
35 | 1._트랜잭션_동시성_제어 | AskZZang | 2012.03.20 | 4667 |
34 | 5._Fetch_Call_최소화 [1] | 박영창 | 2012.05.15 | 4809 |
33 | 1_장._오라클_아키텍처 | AskZZang | 2012.03.02 | 4990 |
32 | 3._라이브러리_캐시_구조 | dasini | 2012.04.06 | 5232 |
31 | 8._애플리케이션_커서_캐싱 | 박영창 | 2012.04.22 | 5243 |
30 | 2장._트랜잭션과_Lock | AskZZang | 2012.03.17 | 5251 |
29 | 4._Redo | 남송휘 | 2012.03.12 | 5380 |
28 | 9._Static_vs._Dynamic_SQL | 남송휘 | 2012.05.07 | 5426 |
27 | 7._Consistent_vs._Current_모드_읽기 | 시와처 | 2012.03.18 | 5501 |