DB/Oracle Administrator

오라클 튜닝(Optimizer)

soccerda 2012. 7. 6. 01:26
반응형
 
1. Optimizer 이란?
SQL의 실행계획을 수립하고, 실행계획(execute plan)을 생성해내는 것


2. Optimizer 2종류
가. Rule-Based Optimization(RBO) : 규칙기반
- 미리 정해진 규칙에 따라 실행계획 수립
- 융통성이 없음
- 9i에서 기본값으로 사용
나. Cost-Based Optimization(CBO) : 비용기반
- 실행비용의 예측을 통한 지능적인 실행계획 수립, Dictionary 이용
- Dictionary 정보에 따라 지능적인 판단수립
- Dictionary 정보에 크게 의존하므로 Dictionary 관리가 매우중요


3. Optimizer hint
명령문 레벨에서 사용하는 파라미터

가. /*+ ALL_ROWS */ : 전체 처리율의 최적화
나. /*+ FIRST_ROWS[(n)] */ : 처음 결과가 나올 때까지의 시간을 줄이기 위해 최적화
n = 임의의 자연수


4. RBO에서의 Optimizer의 실행계획 조정

가. From 절에서 테이블 순서 변경(가장 오른쪽 있는 테이블 부터 수행한다)
나. Where 절에서 컬럼 순서 변경
다. 인덱스의 생성 및 삭제
라. 기타 문법 트릭의 사용
예) ename에 인덱스가 있지만 optimizer가 사용하지 않게 하기 위해서는
where ename = 'test' -> where substr(ename, 1, 4) = 'test'
로 수정한다.


5. CBO에서의 Optimizer의 실행계획 조정

가. Dictionary 통계를 정기적으로 갱신한다.
나. Hint를 사용하여 쿼리를 작성한다.
다. 파라미터를 설정한다.(OPTIMIZER_MODE, DB_FILE_MULTIBLOCK_READ_COUNT 등)


참고 : Hint의 문법

/*+ 힌트 */

예) update /*+ index(e employees_job_idx) */
employees e
set e.salary =
(select /*+ index(m employees_salary_idx) */
(e.salary + m.salary) /2
from employees m ............
.......
반응형

'DB > Oracle Administrator' 카테고리의 다른 글

OWI : DB Buffer Cache 탐색  (0) 2012.07.06
오라클 튜닝(IOT, Table Partition)  (0) 2012.07.06
오라클 튜닝(Autotrace, SQL Trace)  (0) 2012.07.06
Oracle에서 parameter 정보 확인  (0) 2012.07.06
오라클 에러코드(한글)  (0) 2012.07.06