■ 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;
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 |
효율적인 실행계획이란 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의 일부를 임대해주고 관리는 관리업체에서 일괄적으로 해주는 방식이다.
필요할 때 필요한 만큼만 언제 어디서든 서비스를 제공하는 것이 클라우드 컴퓨팅이다.
클라우드 컴퓨팅이란 수도꼭지 개념과 비슷하다. 우리가 물 한잔을 마시기 위해 커다란 물통 값을 다 지불할 수는 없기 때문에, 딱 마시고 싶을 때 물 한잔 값만 지불하고 마실 수 있게끔 해주는 것이다.
이와 같이 한 곳에 메인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 |