bluelion2 / Wednesday_Salon

서울대입구역 수요일 모각코 스터디

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[21.08.11] 모각코 수요 스터디(온라인)

bluelion2 opened this issue · comments

❤ 수요 살롱

📅 8월 11일

☕ 장소 : 서울대입구역

⏱️ 시간 : 수요일 저녁 8시 ~ 10시

🙏 참석하실 분은 밑에 이슈 등록해주세요~!

commented

참여
sql 공부

commented

한일

옵티마이저

  • 사용자가 질의한 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')