- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=6815751&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
Cost란 무엇인가?
![]() | Jonathan Lewis The cost represents ( and has always represented) the optimizer's best estimate of the time it will take to execute the statement |
Cost란 Optimizer가 문장을 수행하는데 걸릴 것이라고 예상하는 추측시간을 의미하며, 과거에도 그래왔다.
Cost는 I/O가 아니라 Query의 예상 수행시간(Time)이다.
Time으로써의 Cost?
![]() | Total Time(쿼리를 수행하는데 걸리는 시간) Total Time = CPU Time + I/O Time + Wait Time Estimated Time(쿼리수행예측시간) = Estimated CPU Time + Estimated I/O Time |
Estimated Time = Estimated CPU Time + Estimated I/O Time =Estimated CPU Time + Estimated Single Block I/O Time + Multi Block I/O Time
- Single Block I/O : 한 번에 하나의 블록만을 읽어 들이는 방식. Random Access I/O에서 발생하며 Index Lookup이나 ROWID Lookup등의 작업과 관련있음.
- Multi Block I/O : 한번에 여러개의 인접한 블록을 동시에 읽어 들이는 방식. Sequential Access I/O에서 발생하며 Table Full Scan이나 Index Fast Full Scan등의 작업과 관련
![]() | Cost를 구하는 공식 Cost = (Estimated Time / Single Block I/O time) = (Single Block I/O Count) + (Multi Block I/O Time / Single Block I/O Time) + (CPU Time / Single Block I/O Time) |
그림1참조
COST : 모든 예상 수행시간을 Single Block I/o Time에 대한 가중치를 고려한 count(수행횟수) 값으로 변환
![]() | 비용기반의 오라클 원리-Jonathan Lewis저 비용 = ( #SRds * sreadtim + #MRds * mreadtim + #CPUCycles / cpuspeed) / sreadtim #SRds - 단일블록 읽기 요청 횟수 비용기반 옵티마이져가 오류를 범하는 6가지 주된 원인
|
System Statistics
Cost의 의미는 OPTIMIZER_COST_MODEL 파라메터에 의해 결정된다.
![]() | ORACLE 9i - System Statistics System Statistics가 있으면 CPU Model을 사용하고, System Statistics가 없으면 I/O Model을 사용하라. |
![]() | ORACLE 10g - Noworkload System Statistics 오라클이 일을 하지 않은 상태(Noworkload)의 System Statistics. |
만약 DBA가 System Statistics를 수동으로 수집하지 않았다면 ORACLE 9i에서는 I/O Model이 사용되며
ORACLE 10g에서는 Noworkload System Statistics를 이용하기 때문에 CPU Model이 사용된다.
I/O로서의 Cost
I/O기반의 Cost (ORACLE 9i까지) = Single Block I/O Count + Multi Block I/O Count
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=6815751&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.