728x90
반응형
[출처: 오라클 성능 분석과 인스터스 튜닝 핵심 가이드]
SQL의 이해
- 사용자 SQL은 Oracle 내부에서 상세 실행 계획으로 변경
- Parsing 이란?
- 구문분석
- 분해와 분석 후 목적에 맞춰 구조를 결정하는 것
- 문장이 이루고 있는 구성 성분을 분해하고 분해 된 성분의 위계 관계를 분석하여 구조를 결정 하는 것.
- 파싱은 컴파일의 일부로서 원시 프로그램의 명령문을 입력으로 받아들여서 구문을 해석 할 수 있는 단위와 여러 부분으로 분할해주는 역할을 함
- 이러한 파서 역할을 하는 컴퓨터가 구문 트리(parse tree)로 재구성 하는 구문 분석 과정
Optimizer에 영향을 미치는 요소
- 사용컬럼, 연산자 형태
- ex> =, Like, In, Is Not Null, NVL()
- SQL 형태
- ex> Select * from Tab Where...
- 인덱스 및 Segment 구조
- 파티션인가 세그먼트인가..
- 통계 정보
- 옵티마이저 설정
- ALL_ROWS, FIRST_ROWS
- DBMS 버전
- 11G, 12C, 18C, 19C ...
실행계획 생성을 위한 고려 요소
- 최종 결정 된 실행 계획은 수많은 선택의 요소를 상호 Cost 비교하여 가장 최적의 결과 값으로 선택된 것임.
- 이를 위해 많은 CPU 및 기타 자원 소모
- 특히 OLTP와 같은 초당 수십~수백 개의 SQL이 동시에 들어올 경우 반드시 SQL 및 실행계획의 공유가 필요함
Optimizer SQL 실행계획 수행 절차
- [1]
- 호출된 SQL은 데이터 딕셔너리를 참조하여 Parsing 후 옵티마이저가 좀 더 편하게 이해 할 수 있는 형태로 쿼리가 일차 변환 됨.
- 옵티마이저는 변환 된 쿼리를 기반으로 잠재적인 일차 실행계획들을 생성
- [2]
- 데이터 딕셔너리에서 여러 통계정보(데이터의 분포도, 테이블 저장구조, 인덱스 구조, 파티션 형태, 비교 연산자) 등을 감안하여 각 실행계획의 비용을 계산
- [3]
- 실행계획들의 비용을 기반하여 빠르게 가장 최소의 비용을 가진 실행계획을 선택
728x90
반응형
'sql_tuning' 카테고리의 다른 글
Section4. Shared Pool 주요 성능 이슈 및 해결 방안 (0) | 2024.04.29 |
---|---|
Section4. Shared Pool 개요와 SQL 공유 방안 (0) | 2024.01.02 |
Section4. Oracle Conventional Path IO와 Direct Path IO의 이해 (0) | 2023.12.12 |
Section4. Buffer Cache에 적재된 Block의 상태 및 Object 들의 정보 확인하기 (0) | 2023.12.05 |
Section4. Buffer Cache 크기 Advice 기능 이해 (0) | 2023.12.05 |