SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

SQL 처리 과정의 전체 흐름: Parse부터 Execute·Fetch까지

원래 이론 →

판단 기준

SQL 처리 과정은 Oracle 내부 처리 단계와 Client가 Cursor를 사용하는 호출 생명주기를 나누어 이해하면 가장 정확합니다.

도식
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
SELECT empno, ename
FROM emp
WHERE deptno = 10;
예시·텍스트
후보 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에서 정확히 설정 크기만큼 반환된다고 단순화하면 다음과 같습니다.

도식
Fetch Size 100→약 10회의 FetchFetch Size 10→약 100회의 Fetch

실제 Fetch 횟수는 Driver 구현, 마지막 End-of-Fetch 확인 Call, LOB 처리, Prefetch 방식 등에 따라 단순 나눗셈과 조금 다를 수 있습니다.

이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.