• 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라고 부른다.

문서에 대하여