Optimizing Oracle Optimizer (2009년)
IO로서의 Cost 0 0 52,936

by 구루비스터디 CBO Optimizer [2018.07.14]


  • 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년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3843

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입