이 사진 한장으로 설명 끝이다. 인데 조금 세세하게 들어가보자.
1. SQL 파싱
- SQL 파서(parser) 가 SQL을 가장 먼저 받아서 처리 한다.
- 하여 가장 기본이 되는 오류들을 먼저 체크한다.
- Syntax 체크 : 문법적 오류 체크
- Symantic 체크 : 의미상 오류가 없는지 체크
- Shared Pool 체크 : 쉐어드 풀에 캐싱되어 있는지 확인
2. SQL 최적화
- Query Transformer
- SQL을 최적화하기 쉬운 형태로 변환한다. 예를 들어서 '값 BETWEEN A AND' B 쓰면 '값 >= A AND 값 <= B' 이런식으로 변환하는 것 같다.
- Plan Generator
- 다양한 실행계획을 생성한다.
- Estimator
- 총 비용을 계산한다.
- 오브젝트 통계, 시스템 통계를 활용하여 예상치를 산정한다.
3. Row Source 생성
- 실행엔진이 실행할 수 있는 코드 또는 프로시저 형태로 포맷팅 한다.
- 레코드 집합을 순차적으로 처리하면서 사용자가 요구한 최종 결과집합을 생성한다.
4. 라이브러리 캐시[Library Cache]
- 최적화된 SQL과 실행계획을 라이브러리 캐시에 캐싱하는데! 여기서
- 스프트파싱 -> Shared Pool에서 동일한 SQL과 실행계획이 발견되면 최적화 안하고 바로 수행한다.
- 하드 파싱 -> Shared Pool에 없으면 최적화를 통해 실행계획을 생성한다.
- 그래서 쿼리가 일관성 있는 것이 기본적으로 처리 속도를 높이는데 기여한다.
- 최적화 과정은 Hard하다. CPU를 많이 소비하는 연산작업이기 때문이다.
본 글은 작성자가 공부한 것을 기록하기 위하여 작성한 것으로, 100% 정확한 정보가 아닐 수 있습니다. 정정을 요청하셔도 좋고 여러 의견을 주시면 너무너무 환영이고 감사하겠습니다.
'Language > SQL 튜닝' 카테고리의 다른 글
2장. [옵티마이저] 2-1. 옵티마이저란? (0) | 2021.10.08 |
---|---|
1장. [SQL 분석 도구] 1-5. DBMS_XPLAN 패키지 (0) | 2021.10.07 |
1장. [SQL 분석 도구] 1-4. V$SQL (0) | 2021.10.06 |
1장. [SQL 분석 도구] 1-3. 트레이스 수집 (0) | 2021.10.05 |
1장. [SQL 분석 도구] 1-2. AutoTrace (0) | 2021.10.04 |