- Cost는 I/O 기준인데 CPU 성능에 대한 수치가 없다면 어떻게 CPU Time을 계산 할 수 있는가?
- Cost의 의미는 \_OPTIMIZER_COST_MODEL parameter에 의해 결정
- Default = CHOOSE
- System Statistics가 있으면 CPU Model을 사용하고, System Statistics가 없으면 I/O Model을 사용하는 것. 즉, System Statistics가 없으면 Time기반으로 Cost를 계산하고 System Statistics가 없으면 I/O기반으로 Cost를 계산
- System Statistics는 Oracle 9i에서 소개된 개념이며, DBA가 수동으로 수집해야 하는 정보이므로 기본적으로 존재 하지 않은 정보이다. 그리고 항상 I/O기준의 Cost를 사용하였다.
- Oracle 10g는 Noworkload System Statistics로 System Statistics를 수집하지 않은 상황에서 Default값으로 사용할 목적으로 소개된 개념.
- Oracle이 일을 하지 않은 상태(NoWorkload)의 System Statistics라는 개념
- CPUSPEEDNW(CPU Speed), IOSEEKTIM(IO Seek Time), IOTFRSPEED(IO Transfer Speed)의 세가지 값으로 구성
- CPUSPEEDNW값은 CPU Time을 계산하는데 사용
- IOSEEKTIM값과 iotfrspeed값은 Single Block I/O Time과 Multi Block I/O Time을 계산하는데 사용
- DBMS_STATS Package를 이용 별도로 수집 가능
??
SQL> select * from sys.aux_stats$
SNAME PNAME PVAL1 PVAL2
--------------- --------------- -------------- --------------------
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 10-30-2008 22:46
SYSSTATS_INFO DSTOP 10-30-2008 22:46
SYSSTATS_INFO FLAGS 1.00
SYSSTATS_MAIN CPUSPEEDNW 1198.14
SYSSTATS_MAIN IOSEEKTIM 10.00
SYSSTATS_MAIN IOTFRSPEED 4096.00
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR????
- Noworkload System Statistics를 기본적으로 사용한다는 사실은 거꾸로 가능한 System Statistics를 수동으로 수집하는 것이 좋은 습관이라는 것을 의미(하지만 한계는 존재/따로 설명)
- 수동으로 수집한 정보를 Workload System Statistics라고 부른다.
문서에 대하여
- 최초작성일 : 2009년 2월 14일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 조동욱님의 'Optimizing Oracle Optimizer'을 참고하였습니다.*