문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
study:oracle:datadb:2week_1 [2010/05/13 02:26] newys |
study:oracle:datadb:2week_1 [2010/05/13 10:20] starlits |
||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ===== 제 3장 SQL의 실행계획 ====== | + | |
+ | ====== 제 3장 SQL의 실행계획 | ||
- 실행계획의 중요성? 액세스 효율에 가장 결정적인 영향을 미침 | - 실행계획의 중요성? 액세스 효율에 가장 결정적인 영향을 미침 | ||
- | ==== 3.1 SQL과 옵티마이져 | + | ===== 3.1 SQL과 옵티마이져 |
| | ||
줄 10: | 줄 11: | ||
- | === 3.1.1 옵티마이져와 우리의 역할 | + | ==== 3.1.1 옵티마이져와 우리의 역할 |
- 숫자 목록 관계형 데이터베이스의 출현배경 : 데이터들 간에 물리적인 연결고리를 가지지 않아도 논리적인 연결고리만 있다면 원하는 데이터를 액세스 할 수 있다. | - 숫자 목록 관계형 데이터베이스의 출현배경 : 데이터들 간에 물리적인 연결고리를 가지지 않아도 논리적인 연결고리만 있다면 원하는 데이터를 액세스 할 수 있다. | ||
줄 21: | 줄 22: | ||
- | === 3.1.2. 옵티마이져의 형태 === | + | ==== 3.1.2. 옵티마이져의 형태 |
줄 49: | 줄 50: | ||
- | | + | |
- | 어느쪽이 전체 테이블 스캔 하는것이 유리한지 구별할 수 없다. | + | EX> 1,000,000 로우를 가지는 TAB1테이블과 100로우를 가지는 TAB2테이블의 로우수를 알지 못하기 때문에 어느쪽이 전체 테이블 스캔 하는것이 유리한지 구별할 수 없다. |
- | EX> 2종류의 값만 가지고 있어 평균분포도가 50%인 컬럼 A로 구성된 인덱스와 10, | + | |
- | 가진 컬럼 B로 구성된 인덱스가 존재. A=' | + | EX> 2종류의 값만 가지고 있어 평균분포도가 50%인 컬럼 A로 구성된 인덱스와 10, |
- | 컬럼A를 사용하는 것이 더 유리하다고 판단. | + | |
줄 62: | 줄 62: | ||
| | ||
+ | 나. 비용기준 옵티마이져(Cost_based Optimizer) | ||
+ | ① 관계형 데이터베이스가 추구하는 이상형 | ||
+ | ② 처리방법들에 대한 비용을 미리 산정해보고 그 중 가장 적은 비용이 들어가는 처리방법 선택 | ||
+ | ③ 통계정보의 형태와 종류는 DBMS 제품이나 버전에 따라 차이 | ||
- | ------------ | ||
- | |||
- | |||
- | |||
- | |||
- | 나. 비용기준 옵티마이져(Cost_based Optimizer) | ||
- | - 관계형 데이터베이스가 추구하는 이상형 | ||
- | - 처리방법들에 대한 비용을 미리 산정해보고 그 중 가장 적은 비용이 들어가는 처리방법 선택 | ||
- | - 통계정보의 형태와 종류는 DBMS 제품이나 버전에 따라 차이 | ||
- | | ||
줄 96: | 줄 90: | ||
* 단점 | * 단점 | ||
- | + | - 실행계획 예측의 곤란 | |
- | | + | |
- | | + | |
- | - 버전에 따른 변화 | + | |
- | - 실행계획 제어가 곤란 | + | |
- | + | ||
- | + | ||
- | -------- | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | - 옵티마이져의 발전 방향 | + | 다. 옵티마이져의 발전 방향 |
- | · 비용기준 옵티마이져로 발전해 나간다. | + | - 비용기준 옵티마이져로 발전해 나간다. |
- | · 단위SQL 보다는 테이블이나 인덱스 단위로 관리 | + | - 단위SQL 보다는 테이블이나 인덱스 단위로 관리 |
- | -통계정보 관리를 위한 제언 | + | 라.통계정보 관리를 위한 제언 |
- | · 통계정보의 수집과 관리를 위해 DBMS에서 제공하는 패키지들이 계속 보강되고 있음 | + | - 통계정보의 수집과 관리를 위해 DBMS에서 제공하는 패키지들이 계속 보강되고 있음 |
- | · 과거에는 I/O에 비중. 최근에는 CPU의 수행정도와 사용량을 추가함 | + | - 과거에는 I/O에 비중. 최근에는 CPU의 수행정도와 사용량을 추가함 |
- | · 통계정보의 보다 간편한 수집이나 관리를 위해 DBMS_STATS 패키지 이용하면 좋음 | + | |
- | => 테이블이나 인덱스와 같은 데이터베이스 오브젝트에 대한 통계정보 생성을 | + | => 테이블이나 인덱스와 같은 데이터베이스 오브젝트에 대한 통계정보 생성을 용이하게 해줌. 테이블이나 인덱스와 관련된 통계정보를 생성할 수 있으며, 견본데이터를 추출하여 통계정보를 생성하는것도 가능. 대용량 테이블이라면 모든 데이터를 대상으로 통계정보를 수집할 수 없으므로 좋은 방법 |
- | => 견본데이터는 5% 이하로 선정하는게 바람직 | + | |
지정 파라메터 : ESTIMATE_PERCENT 로 직접 DBMS_STATS.AUTO_SAMPLE_SIZE 로 자동으로 판단 | 지정 파라메터 : ESTIMATE_PERCENT 로 직접 DBMS_STATS.AUTO_SAMPLE_SIZE 로 자동으로 판단 | ||
=> 통계정보 수집시간을 단축하기 위해 병렬로 처리 가능 | => 통계정보 수집시간을 단축하기 위해 병렬로 처리 가능 |