SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
SQL 처리 과정의 전체 흐름: Parse부터 Execute·Fetch까지
원래 이론 →판단 기준
SQL 처리 과정은 Oracle 내부 처리 단계와 Client가 Cursor를 사용하는 호출 생명주기를 나누어 이해하면 가장 정확합니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Oracle 내부의 기본 처리 단계
Parse → 필요 시 Optimize → Row Source Generation → Execute
Query를 사용하는 Client 호출 생명주기
Parse/Prepare → Bind·Define → Execute → Fetch 반복 → Close
두 흐름은 서로 연결되지만 완전히 같은 분류는 아닙니다.
- Oracle 공식 내부 처리 단계는 Parsing, Optimization, Row Source Generation, Execution입니다.
Fetch는 Query 결과를 Client가 받아 가는 호출 단계이며, 실제 Row Source 작업은 Execute와 Fetch에 걸쳐 진행될 수 있습니다.- 재사용 가능한 Cursor가 있으면 Soft Parse가 가능하고, 새로운 실행계획이 필요하면 Hard Parse 과정에서 Optimizer와 Row Source Generator가 동작합니다.
헷갈리는 개념
재사용 가능한 Cursor가 없고 DML Query를 새로 Hard Parse해야 하면 Optimizer가 실행계획 후보를 비교합니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT empno, ename
FROM emp
WHERE deptno = 10;
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
후보 1: EMP Table Full Scan 후 Filter
후보 2: EMP_DEPTNO_IDX Range Scan 후 ROWID Table Access
Optimizer는 다음과 같은 정보를 사용합니다.
- Table·
Index· Partition 통계 - Cardinality와 Selectivity 추정
- Column 값 분포와 Histogram
- CPU·
I/O 관련 System Statistics - Join 순서·Join Method 후보
- Optimizer Parameter와 환경
Cost는 실제 경과시간의 예측 초 단위가 아니라 동일 Optimizer 환경에서 후보 실행계획을 비교하기 위한 상대적 추정값입니다. 실제 수행시간은 Cache 상태, 동시성, Wait Event, 실제 데이터 분포, Bind 값, Storage 상태 등에 따라 Cost 순서와 다를 수 있습니다.
대표 계산·예제
1,000행을 모두 가져오고 한 번의 Fetch에서 정확히 설정 크기만큼 반환된다고 단순화하면 다음과 같습니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Fetch Size 100→약 10회의 FetchFetch Size 10→약 100회의 Fetch실제 Fetch 횟수는 Driver 구현, 마지막 End-of-Fetch 확인 Call, LOB 처리, Prefetch 방식 등에 따라 단순 나눗셈과 조금 다를 수 있습니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.