언어

13주차 ~

땅호720 2023. 12. 29. 19:07

 

<14주차>

- 옵티마이저: 사용자가 질의한 SQL문의 결과를 얻을 수 있는 다양한 실행 방법 중에서 최적의 실행 방법을 결정하는 역할
- 규칙 기반 옵티마이저: 실행 속도가 빠른 순으로 규칙을 먼저 세워두고 우선순위를 기준으로 실행 계획을 생성
- 비용 기반 옵티마이저: 테이블, 인덱스, 칼럼 등의 다양한 객체 통계정보와 시스템 통계정보를 이용하여 SQL문을 처리하기 위해 예상되는 소요시간 또는 자원 사용량을 비교하여 실행 계획 생성 (대안 계획 생성기 -> 비용 예측기)


- 실행계획: SQL에서 요구한 사항을 처리하기 위한 절차와 방법을 의미


- 인덱스: 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 '찾아보기'와 유사한 개념


<조인 수행 원리>
- NL Join(Nested Loops Join): NL Join은 중첩된 반복문과 유사한 방식으로 조인을 수행하는 기법
- Sort Merge Join 작업 방법
    1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾습니다.
    2. 선행 테이블의 조인 키를 기준으로 정렬 작업을 수행합니다.
    3. 1~2 작업을 선행 테이블의 조건을 만족하는 모든 행에 대해 반복 수행합니다.
    4. 후행 테이블에서 주어진 조건을 만족하는 행을 찾습니다.
    5. 후행 테이블의 조인 키를 기준으로 정렬 작업 수행합니다.
    6. 4~5 작업을 후행 테이블의 조건을 만족하는 모든 행에 대해 반복 수행합니다.
    7. 정렬된 결과를 이용하여 조인을 수행하고, 성공하면 추출 버퍼에 넣습니다.

- Hash Join 작업 방법
    1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음
    2. 선행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해쉬 테이블 생성
    3. 1-2 작업을 선행 테이블의 조건을 만족하는 모든 행에 대해 반복 수행
    4. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음
    5. 후행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해당 버킷을 찾음
    6. 조인에 성공하면 추출버퍼에 넣음
    7. 4-6 작업을 후행 테이블의 조건을 만족하는 모든 행에 대해 반복 수행