SQL 처리 과정
Fig. SQL 처리 단계
【예제】 emp_new테이블에 24522건 삽입하기 : 첫 번째 parse call 에서 hard parsing 수행
SQL> insert into emp_new select * from patient where coh_no='019';
24522 rows created.
Elapsed: 00:00:01.34
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.08 0.16 1 1 0 0
Execute 1 0.76 1.03 3830 5174 11390 24522
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.85 1.19 3831 5175 11390 24522
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 62 (NEWNC01)
Rows Execution Plan
------- ---------------------------------------------------
0 INSERT STATEMENT MODE: ALL_ROWS
24522 TABLE ACCESS MODE: ANALYZED (FULL) OF 'PATIENT' (TABLE)
I. SQL Parsing
1. SQL Parser의 역할
- SQL 문 ⇒ SQL Parser : SQL 문장의 분석하고 parsing(tokenize)해서 parsing tree 생성
- semantic 확인 : 존재하지 않거나 권한 없는 object 사용 혹은 존재하지 않은 컬럼 참조 등 확인
- SQL cursor가 shared pool에 caching되어 있는지 여부 확인
- 해싱 알고리즘 사용
- parsing 요청한 사용자, optimizer 관련 파라미터 설정 등 확인 ⇒ 하나라도 다르면 새로운 SQL cursor 생성
- shared pool에서 정확히 일치하는 SQL cursor를 찾은 경우 : 실행단계
- shared pool에서 매칭되는 SQL문을 못 찾았거나 새로운 SQL cursor 생성 : SQL Optimization 단계
II. Optimization
- 사용자가 던진 SQL문을 최적화하기 쉬운 형태로 변환 수행
- 쿼리 변환 전후 결과가 동일할 경우에만 수행
2. Plan Generator(실행계획 생성기)
- 후보군 실행계획 생성
3. Estimator(비용계산기)
- 실행계획 전체에 대한 총 비용 계산
- 비용 측정 기준 : 선택도(selectivity), cardinality, 비용(cost)
- 선택도(selectivity) : 처리할 집합에서 해당 조건이 만족되는 row가 차지하는 비율
- cardinality : 판정대상이 가진 결과건수 혹은 다음단계로 들어가는 중간결과건수
- 비용(cost) : 실행계획상의 연산을 수행할 때 소요되는 시간비용을 상대적으로 계산한 예측치
{info:title=예제}
query】select * from where empno='0001';
전제】emp 테이블의 전체 row수는 200, 그 중에서 empno='0001'인 row수는 10건
선택도】5%
cardinality】10 rows
{info}
- 예상치
- 목적 : 각 단계를 수행하는데 필요한 I/O, CPU, 메모리 사용량 등을 예측
- object 통계정보, 하드웨적인 시스템 성능 통계정보(CPU 속도, Single blcok read time, multiblock read time 등) 이용
- object 혹은 시스템 통계정보는 오라클이 자동 수집 혹은 정책에 따라 주기적으로 수집됨
- 최적화 소요 시간 단축 전략
- Adaptive search strategy : 예상 쿼리 수행 시간과 쿼리 최적화에 소요되는 시간이 일정비율을 넘지 않도록 적응적 탐색 전략 사용
- Multiple Initial orderings heuristic : 조인 순서는 최적의 실행계획을 발견할 가능성이 높은 순서대로 비용 산정해서 평가
III. Row-Source Generation
- 역할 : 생성된 실행계획을 실행 가능한 코드 또는 프로시저 형태로 포맷팅하는 작업을 담당
- Row-Source : 사용자가 요구한 최종 결과집합을 실제적으로 생성하는데 사용되는 제어 구조
참고 문서