검색결과 리스트
통계정보 에 해당되는 글 3건
- 2010/12/02 [Oracle] 통계정보 생성하기
- 2008/12/31 CBO와 관련된 잘못된 편견
- 2008/11/24 비용기준 옵티마이저 (Cost_based Optimizer)
2010/12/02 10:36
BEGIN
DBMS_STATS.GATHER_TABLE_STATS('SCOTT', 'EMP');
END;
-- 스키마(유저) 단위
BEGIN
DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT', DBMS_STATS.AUTO_SAMPLE_SIZE);
END;
'개발 이야기 > DataBase' 카테고리의 다른 글
| [Oracle] 통계정보 생성하기 (0) | 2010/12/02 |
|---|---|
| [Oracle] 인덱스 리빌드 스크립트 만들기 (0) | 2010/04/13 |
| [Oracle 10g XE] CHARACTERSET 바꾸기 (0) | 2010/04/08 |
| [MySQL] GRANT 명령어를 사용해서 사용자 생성하기 (0) | 2010/01/25 |
| [실행계획 읽기] 1. PLAN_TABLE 생성하기 (0) | 2009/07/13 |
| 오라클 SQL to_char 날짜 관련 정리 (0) | 2009/05/22 |
2008/12/31 08:15
※ 이 글은 "실전 SQL 튜닝" 강의를 듣고 개인적인 의견과 함께 정리한 내용입니다.
CBO와 관련된 잘못된 편견
- 항상 주기적으로 통계정보를 생성해야 한다.
- sql문의 실행계획은 통계정보가 바뀌면 항상 바뀌는 것은 아니지만 바뀔수도 있습니다. 평소에 잘 돌아가던 sql도 통계정보가 변경됨으로써 실행계획이 바뀌어서 기존보다 느려질 수도 있습니다. 하지만 대부분의 sql은 통계정보를 생성하면 통계정보가 크게 바뀐게 아니라면 기존과 큰 차이가 없을 것입니다. - CBO의 가장 적게 드는 COST가 실제로도 가장 적게 드는 COST인가?
- 위 말을 간단하게 표현하자면 '최적의 실행계획이 실제로도 가장 최적인가?'입니다. 하지만 불행히도 실제로는 100% 맞다고 할 수 없습니다. 이는 CBO가 사용하는 자료가 통계적인 자료이기 때문에 sql과 data에 따라서 달라질 수 있기 때문입니다. - Oracle 10g에서는 RBO를 지원하지 않는다.
- 10g에서는 기본이 CBO 입니다. 그러나 RBO의 기능은 존재합니다. 하지만 RBO에 관한 성능 및 기술지원은 보장하지 못합니다.
'개발 이야기 > DataBase' 카테고리의 다른 글
| Cost Based Optimizer의 작동 원리 (0) | 2009/01/08 |
|---|---|
| 오라클 실행계획 보기 (0) | 2009/01/05 |
| CBO와 관련된 잘못된 편견 (0) | 2008/12/31 |
| CBO에서의 Cost란? (1) | 2008/12/10 |
| 옵티마이저 모드 (OPTIMIZER MODE) (1) | 2008/11/25 |
| 비용기준 옵티마이저 (Cost_based Optimizer) (0) | 2008/11/24 |
2008/11/24 08:43
※ 이 글은 "실전 SQL 튜닝" 강의를 듣고 개인적인 의견과 함께 정리한 내용입니다.
Cost_based Optimizer는 통계정보를 바탕으로 실행계획을 수립한다. 이는 Rule_based Optimizer보다 진보된 방법이지만 옵티마이저가 통계정보를 바탕으로 실행계획을 수립하기 때문에 sql이 작성자 의도대로 실행되지 않는 경우가 있기 때문에 실행계획 예측이 어렵다. 하지만 이런점은 초보자가 작성한 sql이라도 어느정도 성능을 보장해 주는 역할을 하기도 한다.
실제 경험상 Oracle 9i에서 10g로 업그레이드만 했을 뿐인데도 쿼리의 실행 속도가 현저하게 빨라진 경우를 본적이 있다. 둘다 Cost_based Optimizer이긴 하지만 10g의 옵티마이저가 좀더 똑똑하다는(다양한 통계정보를 이용해서 실행계획을 잘 짜는) 이야기다. 이렇게 옵티마이저가 발전할 수록 옵티마이저는 최소한의 성능을 보장해 주고 좀더 빠른 실행속도를 보장해 줄 것이다.
Cost_based Optimizer가 이용하는 통계정보
Cost_based Optimizer는 통계정보를 바탕으로 실행계획을 수립한다. 이는 Rule_based Optimizer보다 진보된 방법이지만 옵티마이저가 통계정보를 바탕으로 실행계획을 수립하기 때문에 sql이 작성자 의도대로 실행되지 않는 경우가 있기 때문에 실행계획 예측이 어렵다. 하지만 이런점은 초보자가 작성한 sql이라도 어느정도 성능을 보장해 주는 역할을 하기도 한다.
실제 경험상 Oracle 9i에서 10g로 업그레이드만 했을 뿐인데도 쿼리의 실행 속도가 현저하게 빨라진 경우를 본적이 있다. 둘다 Cost_based Optimizer이긴 하지만 10g의 옵티마이저가 좀더 똑똑하다는(다양한 통계정보를 이용해서 실행계획을 잘 짜는) 이야기다. 이렇게 옵티마이저가 발전할 수록 옵티마이저는 최소한의 성능을 보장해 주고 좀더 빠른 실행속도를 보장해 줄 것이다.
Cost_based Optimizer가 이용하는 통계정보
- 테이블의 로우 수와 블럭 수
- 블록당 평균 로우 수
- 로우의 평균길이
- 컬럼별 상수값의 종류
- 분포도
- 컬럼내의 NULL값의 수
- 클러스터링 팩터
- 인덱스의 깊이(Depth, Level)
- 컬럼의 최대, 최소값
- 리프(Leaf) 블록수
- 가동 시스템의 I/O, CPU정보
'개발 이야기 > DataBase' 카테고리의 다른 글
| 오라클 실행계획 보기 (0) | 2009/01/05 |
|---|---|
| CBO와 관련된 잘못된 편견 (0) | 2008/12/31 |
| CBO에서의 Cost란? (1) | 2008/12/10 |
| 옵티마이저 모드 (OPTIMIZER MODE) (1) | 2008/11/25 |
| 비용기준 옵티마이저 (Cost_based Optimizer) (0) | 2008/11/24 |
| 규칙 기준 옵티마이저 (Rule_based Optimizer) (0) | 2008/11/24 |