SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
부분범위 처리 기초: 첫 행 응답·Fetch 중단·전체 처리량
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 단순 판단 | 정확한 기준 |
|---|---|
| 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 처리 흐름은 다음처럼 본다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
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·
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
실행 A
→ 20행을 소비하고 즉시 Close
실행 B
→ 1,000,000행을 마지막까지 Fetch
같은 SQL_ID와 Plan이라도 두 실행의 A-Rows, Buffers, Fetches, Rows Processed, Elapsed Time은 달라질 수 있다.
대표 계산·예제
예를 들어 업무 조건과 정렬 방향에 맞는 Index가 있다면 다음처럼 앞쪽 Key에서 중단할 가능성이 높아진다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.