SQLP

시험 직전 요약장

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

이론 목록

부분범위 처리 기초: 첫 행 응답·Fetch 중단·전체 처리량

원래 이론 →

판단 기준

단순 판단정확한 기준
SELECT는 Execute에서 전체 결과를 Client에 만든다일부 작업은 Execute 전에 필요하지만 많은 Row Source는 Fetch가 진행되며 계속 행을 생산한다
첫 행 시간과 사용자가 보는 첫 결과 시간은 같다Driver Prefetch·Network·Serialization 때문에 First Batch 시간이 더 중요할 수 있다
화면이 20행이면 Database도 20행만 처리한다SQL Row Limit, Plan, Driver Prefetch, Client 소비가 모두 맞아야 한다
FIRST_ROWS(20)은 결과를 20행으로 제한한다Optimizer 목표이며 결과 제한은 FETCH FIRST 20 같은 SQL 의미로 표현한다
SORT ORDER BY STOPKEY이면 하위 Scan도 20행이다Top-N을 확정하려고 많은 후보를 읽을 수 있다
Fetch Size 100이면 Client가 20행만 읽어도 20행만 전송된다첫 Batch에서 필요보다 많은 행을 Prefetch할 수 있다
END_OF_FETCH_COUNT가 낮으면 부분범위가 성공했다오류·취소·재실행도 포함될 수 있으므로 업무·오류·Delta를 함께 본다
ROWS_PROCESSED가 20이면 하위 Row Source도 20행을 읽었다하위 후보는 Runtime A-Rows와 Buffers로 확인한다
일부 Fetch Runtime Plan은 전체 실행 비용을 보여 준다Cursor가 닫힌 시점까지의 작업만 보여 주므로 전체 Fetch와 별도 비교한다
Cursor를 열어 두면 다음 Page가 항상 빠르다Connection·Open Cursor·Undo·장애 복구 비용이 커질 수 있다

이 부분의 원문 →

헷갈리는 개념

SELECT의 Client 처리 흐름은 다음처럼 본다.

도식
Parse
→ Execute
→ Fetch Batch
→ Fetch Batch
→ ...
→ End of Fetch 또는 Early Close
  • Parse: SQL 문법·의미를 확인하고 실행 가능한 Cursor를 준비한다.
  • Execute: Query 실행을 시작하고 Row Source를 구동할 준비를 한다.
  • Fetch: Result Set에서 다음 행 또는 다음 Batch를 Client로 전달한다.
  • Close: ResultSet·Statement와 관련 자원을 정리한다.

Execute가 항상 작업을 거의 하지 않는다고 단정하면 안 된다. Blocking Operation, Parallel Query 초기화, Remote Access 등은 첫 행 전에 상당한 작업을 수행할 수 있다. 반대로 많은 Row Source는 부모 Operation이 행을 요청할 때 필요한 만큼 생산하므로 Fetch가 진행되는 동안 Scan·Join·Table Access가 계속될 수 있다.

도식
실행 A
→ 20행을 소비하고 즉시 Close

실행 B
→ 1,000,000행을 마지막까지 Fetch

같은 SQL_ID와 Plan이라도 두 실행의 A-Rows, Buffers, Fetches, Rows Processed, Elapsed Time은 달라질 수 있다.


이 부분의 원문 →

대표 계산·예제

예를 들어 업무 조건과 정렬 방향에 맞는 Index가 있다면 다음처럼 앞쪽 Key에서 중단할 가능성이 높아진다.

이 부분의 원문 →

내 최근 연습 오답

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

학습 기록 →

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