■ RBO
  ○ 미리 정해진 규칙에 의한 실행계획 결정
    - 연산자 우선순위
    - 접근 경로의 우선순위
    - SQL문장의 syntax 규칙
    => RBO는 융통성이 없음.
  ○ 데이터에 대한 통계 내지 실제 SQL을 수행할 경우에 소요될 비용에 대한 고려를 하지 않음.
    - 인덱스를 쓰려면 내가 찾고자 하는 데이터가 대략 5% 이내라면 써도 되나 꼭 모든 경우에 그런 것은 아니다. 테이블에 총 데이터 건수가 굉장히 많다면 5% 이내라 해도 풀테이블스캔이 더 효율적일 수 있다. 하지만 RBO는 무조건 인덱스가 있으면 인덱스를 타버려 인덱스의 효율이 없음.
  ○ RBO는 오라클6버전 이하와의 역호환성을 위해 지원


● RBO 순위 결정 방식

 순위  접근경로
 1  Single row by ROWID
 2  Single row by cluster join
 3  Single row by hash cluster key with unique or primary key
 4  Single row by unique or primary key
 5  Cluster join
 6  Hash cluster key
 7  Indexed cluster key
 8  Composite index
 9  Single-column index
 10  Bounded range search on indexed columns
 11  Unbounded range search on indexed columns
 12  Sort-merge join
 13  MAX or MIN of indexed column
 14  ORDER BY on indexed column
 15  Full table scan

SQL> select *
   from emp
   where empno=7900;

위 쿼리를 RBO를 이용하여 실행계획을 세워보면, 맨처음 15번 규칙부터 위로 가면서 계속 대입해보는데, 여기서는 15번과 9번이 부합되는 것으로 확인되었다. 번호가 작은 것이 더 빠른 방식이므로 옵티마이저는 9번 규칙을 적용하여 실행계획을 세워준다.


■ CBO
  ○ 데이터에 대한 각종 통계를 사용
  ○ 실제 SQL을 수행할 때 소요될 비용을 예측하고 그 값을 기준으로 실행계획 결정
    - I/O 횟수
    - CPU 사용량
    - 메모리 사용량
    - 네트워크 전송량
    => 무조건 정해진 규칙에 의해 판단하는 RBO에 비해 보다 현실적이고 지능적인 판단 가능.
  ○ 오라클7버전에 처음 도입. 11gR2부터는 RBO는 없어지고 CBO만 쓰임.

   A  B
 한번에 끌어올릴 수 있는 Block 갯수  100  10
 I/O 횟수  5  10
위와 같이 옵티마이저가 실행계획을 세우려는데 A와 B의 두가지 방법이 나왔다. A는 풀테이블스캔, B는 인덱스스캔이라고 할 때 어느 것이 더 효율적일까? 물론 A가 더 효율적이다.
효율적인 실행계획이란 I/O를 최대한 적게 일으키는 것이 가장 우선순위이기 때문이다.


● CBO에서만 사용 가능한 기능들
  - 테이블 및 인덱스의 파티셔닝
  - IOT
  - Reverse key 인덱스
  - FBI
  - Select 문장에서의 SAMPLE절
  - 병렬쿼리 및 병렬DML
  - Star join 및 Star 변형
  - 옵티마이저 확장
  - Mview를 이용한 Query rewrite
  - Enterprise Manager progress meter
  - Hash join
  - 비트맵인덱스 및 비트맵조인인덱스
  - 인덱스 skip scan 알고리즘



[면접예상질문] 풀테이블스캔과 인덱스스캔의 차이점에 대해 설명하시오.

[면접예상질문] 클라우드 컴퓨팅에 대해 설명하시오.
클라우드 컴퓨팅이란 수도꼭지 개념과 비슷하다. 우리가 물 한잔을 마시기 위해 커다란 물통 값을 다 지불할 수는 없기 때문에, 딱 마시고 싶을 때 물 한잔 값만 지불하고 마실 수 있게끔 해주는 것이다.
이와 같이 한 곳에 메인DB를 놓고, 각 회사에서는 호스팅 방식으로 DB의 일부를 임대해주고 관리는 관리업체에서 일괄적으로 해주는 방식이다.
필요할 때 필요한 만큼만 언제 어디서든 서비스를 제공하는 것이 클라우드 컴퓨팅이다.

'오라클 > 튜닝' 카테고리의 다른 글

[튜닝] CBO 통계의 수집  (0) 2010.10.07
[튜닝] 옵티마이저 동작의 조정  (0) 2010.10.07
[튜닝] 옵티마이저 개요  (0) 2010.10.05
[튜닝] SQL Trace  (0) 2010.10.05
[튜닝] Autotrace  (0) 2010.10.04
Posted by 겨울섬
,