[21.08.11] 모각코 수요 스터디(온라인)
bluelion2 opened this issue · comments
❤ 수요 살롱
📅 8월 11일
☕ 장소 : 서울대입구역
⏱️ 시간 : 수요일 저녁 8시 ~ 10시
🙏 참석하실 분은 밑에 이슈 등록해주세요~!
참여
sql 공부
한일
옵티마이저
- 사용자가 질의한 SQL문에 대한 다양한 실행 방법들중 최적의 실행방법을 결정
비용기반 옵티마이저
- SQL문을 처리하는데 비용이 가장 적게 드는 실행계획 선택하는 방식
- 비용: SQL문을 처리하는데 예상되는 시간 또는 자원 의미
- 테이블, 인덱스 등의 통계 정보와 시스템 통계정보를 이용하여 최적의 실행계획을 도출
- 인덱스를 사용하는 비용이 전체 테이블 스캔 비용보다 크다고 판단되면 테이블을 풀스캔함
구성요소
- 질의변환기: 사용자가 작성한 SQL문을 처리하기에 보다 용이한 형태로 변환
- 비용예측기: 대안 계획 생성시에 의해서 생성된 대안 계획을 비용을 예측하는 모듈
대안 계획의 정확한 비용을 측정하기 위해서 연산의 중간 집합의 크기 및 결과 집합의 크기, 분포도 등의 예측 - 대안계획생성기: 동일한 결과를 생성하는 다양한 대안 계획을 생성하는 모듈
SQL 실행 계획 수립 시 옵티마이저가 착안하는 정보
- 테이블, 컬럼, 인덱스 구조에 관한 기본 정보
- 오브젝트 통계(테이블 통계, 인덱스 통계 히스토그램 통계)
- 시스템 통계: CPU 속도, Single Block I/O 속도, Multi Block I/O 속도
- 옵티마이저 관련 파라미터
- 하나의 쿼리 수행 시 짧은순간 후보군이 될만한 무수히 많은 실행 계획을 도출
SELECT A. EMP_NO
, A.EMP_NM
, B.DEPT_CD
, C.CERTI_CD
FROM TB EMP A
, TB DEPT B
, TB_EMP_CERTI C.
WHERE B.DEPT_CD = '100004'
AND A.DEPT CD = A.DEPT_CD
AND A.EMP_NO = C. EMP_NO;
Execution Plan
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=6 Card=123 Bytes=6K)
1 0 HASH JOIN (Cost=6 Card=123 Bytes=6K)
2 1 NESTED LOOPS (Cost=3 Card=46 Bytes=1K)
3 2 INDEX (UNIQUE SCAN) OF 'PK_TB_DEPT' (INDEX (UNIQUE)) (Cost=Card=1 Bytes=7)
4 2 TABLE ACCESS (FULL) OF 'TB_EMP' (TABLE) (Cost=3 Card=46 Bytes=1K)
5 1 TABLE ACCESS (FULL) OF 'TB_EMP_CERTI' (TABLE) (Cost=3 Card=123 Bytes=2K)
Predicate information (identified by operation id)
1 - access("A","EMP_NO"="C". "EMP_NO")
3 - access("B". "DEPT_CD"='000004')